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) или просто удалить его.

Если эта статья помогла вам, пожалуйста, оставьте комментарий :smiley:

Спасибо за прочтение!