How to fix: "Every call to the add_setting() method needs to have a sanitization
Некоторое время назад 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 Dashbord
→ Appearance
→ Theme Check
. Этот плагин не показывает больше информации чем wordpress.org при публикации обновления темы. Но мы можем модифицировать его, значит начнём.
Если плагин “Theme Check” ещё не установлен, то нужно сделать это.
А затем модифицировать файл customizer.php
находящийся в plugins/theme-check/checks/
. Его можно модифицировать непосредственно из WordPress Dashbord. Для этого перейдите в WordPress Dashbord
→ Plugins
→ Editor
и выберите 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 © 2014. All rights reserved.',
'sanitize_callback' => 'esc_attr',
));
Как вы видите sanitize callback function
имеется. Проблема заключается в специальном символе ©
в значении ключа default
.
© ; = Copyright = © = (c)
Теперь Я должен изменить специальный символ © ;
на его текстовую версию (c)
или просто удалить его.
Если эта статья помогла вам, пожалуйста, оставьте комментарий
Спасибо за прочтение!
Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.