Intereting Posts
Как решить 404 ошибки permalink на сервере nginx Функциональность контроллера – если пользователь не выполнил вход в систему, отправьте их на определенную страницу (а не wp_login) Как загрузить последний скрипт jQuery? Редактируемый стол для конечных пользователей Список POSTS в WordPress по просмотрам Как использовать несколько экземпляров сделки или объявления с помощью виджета подключаемого модуля таймера обратного отсчета Есть ли плагин для пользователей сообщений в качестве администратора? Я хочу получить все сообщения в блоге без имени пользователя и пароля Вызов пользовательской функции выдержки в локальном цикле Как изменить количество элементов списка в категории, созданной файлом edit-tags.php Крюк, который срабатывает при сохранении настроек администратора Нужна помощь для подходящего sanitize_callback для scroll_logo в customizer Как добавить напоминания / заметки в метатеги New Post Как инициализировать что-либо в модульном тесте перед вызовом init? Настройка WPLANG из плагина

Как добавить настройки настраивателя в дочернюю тему

Я хотел бы добавить опцию в Customizer моей дочерней темы, но у меня есть некоторые проблемы с ее реализацией. Я уверен, что моя проблема связана с именем аргументов, которые я вызываю, но я не уверен, поэтому, если вы видите что-то еще, пожалуйста, не стесняйтесь рассказывать мне, что вы думаете.

То, что я подозреваю, ошибочно:

  1. Я не уверен, какие аргументы в моем functions.php должны иметь имя дочерней темы (например, child_theme_name / child_theme_name tesseract-child ) и заголовок родительской темы (например, parent_theme_name / parent_theme_name ). Обычно я предполагаю, что всегда должен использовать имя дочерней темы, но объявление для панелей файла customizer.php родительской темы включает имя родительской темы ( tesseract_footer_options ), и я не уверен, что WordPress изменяет это имя при использовании дочерних тем. Например, если первый аргумент в add_section в add_section теме будет parent_theme_name_footer_options или child_theme_name_footer_options

  2. Если я должен использовать имя дочерней темы, я смущен. Когда я пытаюсь назвать функцию ссылкой на имя дочерней темы (например, tesseract-child_options ), которая включает дефисы, я получаю сообщение об ошибке. Итак, я не думаю, что php любит иметь функции, названные с дефисами, и на самом деле я прочитал, что этот php не позволяет дефис в именах функций. Другая подсказка, что дефисы плохи: не только дефисы из имени дочерней темы вызывают сбой, это вызвало мой редактор (возвышенный текст), чтобы пометить код странным образом. Чтобы проверить, были ли проблемы с дефисами, я изменил имя функции на tesseract_child_options , используя все символы подчеркивания, но это кажется мне неправильным, потому что технически имя темы – tesseract-child с дефисом, а не tesseract_child с подчеркиванием.

Код

Это объявление панели в файле customizer.php родительской темы:

 $wp_customize->add_panel( 'tesseract_footer_options', array( 'priority' => 5, 'capability' => 'edit_theme_options', 'title' => 'Footer Options', //'description' => '' ) ); 

Это код, который я использую в файле function.php моей дочерней темы, чтобы попытаться добавить раздел к этой панели параметров:

 add_action( 'customize_register' , 'tesseract_child_options' ); function tesseract_child_options( $wp_customize ) { $wp_customize->add_section( 'tesseract_footer_options', array( 'title' => __( 'Reblog Options', 'tesseract' ), 'priority' => 100, 'capability' => 'edit_theme_options', 'description' => __('Change Reblog Options Here.', 'tesseract'), ) ); $wp_customize->add_setting( 'number_of_reblogs', array( 'default' => '3' ) ); $wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'reblog_number_control', array( 'label' => __( 'Number of Reblogs', 'tesseract-child' ), 'section' => 'tesseract_footer_options', 'settings' => 'reblog_number', 'type' => 'text', 'priority' => 10, ) )); } 

Любая помощь будет принята с благодарностью! Благодаря!

ОБНОВЛЕНИЕ ОТНОСИТЕЛЬНО ОТВЕТА ПРОСТИ:

@Prosti ответил на вопрос, но я просто хочу уточнить, что было не так для тех, кто пытается понять, как это сделать:

  1. Имя всей функции, вызываемой действием customize_register является произвольным, вы можете называть его чем угодно, если вы не включаете дефисы. Обратите внимание, что это имя функции не обязательно должно относиться к имени родительской темы или имени дочерней темы. Чтобы проиллюстрировать это, в моем рабочем примере (см. Ниже) я изменил имя функции, которое я использовал в своем первоначальном вопросе, от childtheme_customize_register до childtheme_customize_register . Обратите внимание, что, хотя вам не нужно ссылаться на дочернюю тему или имя родительской темы в этой функции, это, тем не менее, хорошая практика, но только ради удобочитаемости, а не функциональности.

  2. Имя создаваемого раздела (первый аргумент в функции add_section ) произвольно, вы можете называть его всем, что хотите. Это тег, который WP будет использовать для внутренней передачи переменной. Текст, который вы add_section в add_section второй аргумент add_section , определит, какой текст появится, когда вы впервые приземлитесь в корневом меню настройки (первое появившееся меню). Опять же, хорошая практика диктует, что в целях разборчивости используйте имя, связанное с темой.

  3. Внутри add_section и add_control все два оператора аргументов, которые я использовал (например, title , description и label ), нуждались в том, чтобы точное имя дочерней темы add_control вторым аргументом. Если имя дочерней темы имеет дефисы (как и у меня, например, tesseract-child ), этот второй аргумент должен также иметь дефисы.

  4. priority раздела определяется, где (т. Е. Как высокий или низкий) созданный раздел попал внутрь списка опций. Нижний колонтитул был 4-й секцией у родителей, и у него был приоритет 5 . Если я установил приоритет внутри add_section , чтобы иметь приоритет 4 опция была выше над кнопкой выбора add_section колонтитула, если я установил ее в 6 , она опустилась ниже нее.

Пример рабочего кода

 
 add_action ('customize_register', 'childtheme_customize_register');  // второй аргумент произволен, но не может иметь дефисы, потому что php не позволяет им в именах функций.



 function childtheme_customize_register ($ wp_customize) {

 $ Wp_customize-> add_section ( 
     'tesseract_reblog_options', 
     массив (
         'title' => __ ('Reblog Options', 'tesseract-child'), // 2nd arg соответствует имени дочерней темы 
         'priority' => 6, // помещаем раздел ниже параметров нижнего колонтитула в список
         'способность' => 'edit_theme_options',
         'description' => __ ('Change Reblog Options Here.', 'tesseract-child'), // 2nd arg соответствует имени дочерней темы 
     ) 
 );


 $ wp_customize-> add_setting ('number_of_reblogs',
     массив (
         'default' => '3'
     )
 );  

 $ wp_customize-> add_control ('setting_id', массив (
   'label' => __ ('Number of Reblogs', 'tesseract-child'), // 2nd arg соответствует имени дочерней темы
     'section' => 'tesseract_reblog_options',
     'settings' => 'number_of_reblogs',
     'type' => 'text',
     'priority' => 6
 ));
 }

Solutions Collecting From Web of "Как добавить настройки настраивателя в дочернюю тему"

Хорошо, ознакомьтесь с инструкцией разработчика темы.

 $wp_customize->add_control( 'reblog_number_control', array( 'label' => __( 'Number of Reblogs', 'tesseract-child' ), 'section' => 'tesseract_footer_options', 'settings' => 'number_of_reblogs', 'type' => 'text', 'priority' => 10 ) ); 

Поскольку вы находитесь в дочерней теме

 'title' => __( 'Reblog Options', 'tesseract' ), 

shoudl be

 'title' => __( 'Reblog Options', 'tesseract-child' ), 

Другими словами, ваши имена настроек, управления и раздела должны совпадать в add_control , add_section , add_setting .