Сегодня разберемся как добавить редактируемый из админ-панели текст в подвал сайта в WordPress.
Видео-версия
Для реализации данной возможности воспользуемся фреймворком Customizer, входящим в состав WordPress.
В качестве примера возьмем строку «Сайт работает на WordPress» в подвале сайта.
Т.к. манипуляции будем производить над одной из тем из каталога WordPress, то подключимся по FTP и создадим и активируем дочернюю тему.
Затем откроем файл functions.php дочерней темы и добавим следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
add_action('customize_register', 'dco_customize_register'); function dco_customize_register($wp_customize) { //Добавляем новую вкладку в раздел Внешний вид -> Настроить админ-панели $wp_customize->add_section('footer', array( 'title' => 'Подвал', 'priority' => 1, //с помощью этого параметра можно регулировать положение вкладки в списке вкладок )); //Указываем имя настройки, которая будет содержать текст для подвала $setting_name = 'footer_text'; //и добавляем ее $wp_customize->add_setting($setting_name, array( 'default' => '', //с помощью этого параметра можно задать текст по умолчанию 'sanitize_callback' => 'sanitize_textarea_field', 'transport' => 'postMessage' )); //Добавляем область для ввода текста на созданную нами вкладку $wp_customize->add_control($setting_name, array( 'section' => 'footer', 'type' => 'textarea', 'label' => 'Текст в подвале', )); //Добавляем поддержку предпросмотра изменений без полного обновления страницы $wp_customize->selective_refresh->add_partial($setting_name, array( 'selector' => '.site-info', //должен содержать class или id элемента с текстом в подвале 'render_callback' => function() use ($setting_name) { return nl2br(esc_html(get_theme_mod($setting_name))); } )); } |
Теперь скопируем шаблон template-parts/footer/site-info.php из родительской темы.
и заменим
1 |
<a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyseventeen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyseventeen' ), 'WordPress' ); ?></a> |
на
1 |
<?php echo nl2br(esc_html(get_theme_mod('footer_text'))); ?> |
При необходимости текст по умолчанию можно указать вторым параметром:
1 |
<?php echo nl2br(esc_html(get_theme_mod('footer_text', 'текст по умолчанию'))); ?> |
Сохраняем изменения, переходим в раздел Внешний вид -> Настроить и щелкаем по вкладке «Подвал», либо по иконке карандаша в нижней части сайта.
Вводим необходимый текст и сохраняем.
Скажите, для каждого блока код придётся дублировать?
Хочу я например таких редактируемых полей сделать штук 10
Всегда думал, что такие штуки лучше делать через виджеты. Т.е. создать позицию для вывода виджета и вставлять туда хоть 100 блоков.
У меня не получается кто то может помочь?