thumb

Деякий час назад WordPress.org змінив правила публікації тем в їх репозиторії. І тепер, Я не маю можливості опублікувати оновлення моєї теми, через таку помилку:

REQUIRED: Found a Customizer setting that did not have a sanitization callback function. Every call to the add_setting() method needs to have a sanitization callback function passed.

Для локалізації проблеми я використовував плагин “Theme Check”. Після установки сторінка плагіна буде доступна в WordPress DashbordAppearanceTheme Check. Цей плагін не показує більше інформації ніж wordpress.org при публікації поновлення теми. Але ми можемо модифікувати його, значить почнемо.

Якщо плагін “Theme Check” ще не встановлено, то потрібно зробити це.

А потім модифікувати файл customizer.php що знаходиться в plugins/theme-check/checks/. Його можна модифікувати безпосередньо з WordPress Dashbord. Для цього перейдіть в WordPress DashbordPluginsEditor і виберіть Theme Check плагін.

Тепер, в файл customizer.php, додамо такий рядок:

echo "$file_path: $match ";

Після цього блоку коду:

if ( false === strpos( $match, 'sanitize_callback' ) && false === strpos( $match, 'sanitize_js_callback' ) ) {
$this->error[] = '<span class="tc-lead tc-required">' . __('REQUIRED','theme-check') . '</span>: ' . __( 'Found a Customizer setting that did not have a sanitization callback function. Every call to the <strong>add_setting()</strong> method needs to have a sanitization callback function passed.', 'theme-check' );

Готово. Це повинно вказати на файл і фрагмент коду який викликає помилку. У моєму випадку, воно показало цей рядок:

/var/www/site/wp-content/themes/anarcho-notepad/inc/customizer.php: 'copyright_post', array( 'default' => 'Copyright ©

Цей рядок означає те, що код викликає помилку цей:

'copyright_post', array( 'default' => 'Copyright ©

і він знаходиться в файлі customizer.php. Значить потрібно знайти цей код у файлі. Ось він:

// Copyright after post
$wp_customize->add_setting( 'copyright_post', array(
    'default'            => 'Copyright &copy; 2014. All rights reserved.',
    'sanitize_callback'  => 'esc_attr',
));

Як ви бачите sanitize callback function є. Проблема полягає в спеціальному символі &copy; в значенні ключа default.

&copy ; = Copyright = © = (c)

Тепер Я повинен змінити спеціальний символ &copy ; на його текстову версію (c) або просто видалити його.