Intereting Posts
Как мне вызвать функцию для использования на странице? Добавление элемента действия в таблицу администраторов и отправка электронной почты Как мне разрешить загрузку списка расширений библиотеки мультимедиа? Какие плагины демонстрируют отличную разработку плагинов WP? Получение повторяющихся сообщений на домашней странице с помощью виджета, добавленного между сообщениями Новая установка WordPress, каковы причины отсутствия вкладки «Установить темы»? Случайная запись Постоянная ссылка Вставка собственного скрипта PHP на домашнюю страницу Сообщения и страницы, которые не отображаются на admin, но показаны в теме Создание пользовательской формы ответа для комментариев WordPress Получение пересечения двух терминов из двух разных пользовательских таксономий через API Как отслеживать всех пользователей, зарегистрированных на сайте? Закажите или закажите в tax_query (как определить порядок терминов в WP_Query) Отрегулируйте ограничение памяти на сервере bitnami wordpress (azure) Список в алфавитном порядке

Ошибка register_sidebar при использовании include в функции functions.php

Я зарегистрировал несколько боковых панелей через функции.php следующим образом:

// Register sidebars function register_widgets() { // Main sidebar register_sidebar( array( 'name' => __( 'Main Sidebar', 'Core' ), 'id' => 'main', 'description' => __( 'The main sidebar appears on the right on each page except the front page template and blog.', 'Core' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h3 class="widget-title">', 'after_title' => '</h3>', ) ); } add_action( 'widgets_init', 'register_widgets' ); 

Поскольку я добавляю несколько боковых панелей, я бы хотел переместить код в include. Это то, что у меня теперь есть в functions.php:

 // Load widgets require_once("includes/widgets.php"); 

Теперь, когда я переместил код боковой панели из functions.php, моя тема больше не отображает никаких параметров виджетов через Appearance> Widgets.

Я не вижу, что сделал какие-то ошибки. Что я сделал не так?

Вы ошиблись в файле widgets.php, скорее всего, забываете добавить открывающий </php в начале вашего файла. Кроме того, я забыл еще одну вещь, require_once("includes/widgets.php"); не должно быть в какой-либо функции или крючке

Просто для удобства, вы можете сократить код, если вы зарегистрируете множество боковых панелей, используя цикл foreach . Вот как я регистрирую боковые панели в своей теме

 <?php function pietergoosen_widgets_init() { $mainWidgets = array ( 'sidebar-10' => array ( __( 'Main Sidebar', 'pietergoosen' ) => __( 'Main Sidebar for the website pages', 'pietergoosen' ), ), 'sidebar-11' => array ( __( 'Content Sidebar', 'pietergoosen' ) => __( 'Additional sidebar on the right of pages', 'pietergoosen' ), ), // Sidebars 12, 13 and 14 not redundant as from twentyfourteen 'sidebar-15' => array ( // Used in footer-functions.php __( 'Footer Widget One', 'pietergoosen' ) => __( 'Footer widgets', 'pietergoosen' ), ), 'sidebar-16' => array ( // Used in footer-functions.php __( 'Footer Widget Two', 'pietergoosen' ) => __( 'Footer widgets', 'pietergoosen' ), ), 'sidebar-17' => array ( // Used in footer-functions.php __( 'Footer Widget Three', 'pietergoosen' ) => __( 'Footer widgets', 'pietergoosen' ), ), 'sidebar-18' => array ( // Used in footer-functions.php __( 'Footer Widget Four', 'pietergoosen' ) => __( 'Footer widgets', 'pietergoosen' ), ), 'sidebar-19' => array ( // Used in content-functions.php __( 'Inside first post widget for advertising', 'pietergoosen' ) => __( 'Inside first post widget', 'pietergoosen' ), ), 'sidebar-20' => array ( // Used in content-functions.php __( 'After first post widget', 'pietergoosen' ) => __( 'After first post widget for ads', 'pietergoosen' ), ) ); foreach ( $mainWidgets as $mainId => $mainWidget ) { foreach ($mainWidget as $mainWidgetname => $mainWidgetdescription) { register_sidebar( array ( 'name' => __( $mainWidgetname, 'pietergoosen' ), 'id' => $mainId, 'description' => __( $mainWidgetdescription, 'pietergoosen' ), 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h1 class="widget-title">', 'after_title' => '</h1>', )); } } } add_action( 'widgets_init', 'pietergoosen_widgets_init' ); 

Почему бы не использовать функцию WordPress locate_template() . Информация об этом в WordPress Codex здесь

Создайте папку, которая включает в себя тему или тему ребенка с вашим widgets.php, а затем добавьте ее в свой файл functions.php в своей теме.

 function mywebsite_sidebars() { // checks in parent and child themes locate_template( array( 'includes/widgets.php' ), true, true ); } add_action( 'after_setup_theme', 'mywebsite_sidebars' );