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


Arthur Gareginyan

Arthur Gareginyan

Arthur is a designer and full stack software engineer. He is the founder of MyCyberUniverse.com. His personal website can be found at arthurgareginyan.com. Check out his free WordPress plugins at wordpress.org.

Follow Arthur: