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.