Intereting Posts
Wp-admin продолжает обновлять Заменить архивы терминов на статические страницы Использование пользовательского типа сообщений в качестве таксономии может ли регистрация разрешена программно? Overed get_template_part ('partials / post', 'sidebar'); с плагином Добавить новую страницу в WordPress программно Пользовательские типы сообщений, отфильтрованные по таксономии с использованием REST API v2 как добавить пользовательские css и js в текстовый редактор WordPress непосредственно без использования .php-файла Post.php – Условные заявления для новой публикации и редактирования сообщения Класс для выбранного меню с помощью wp_nav_menu Для лучшей цифровой журналистики, как сохранить второй заголовок и выдержку? Будет ли использование дочерней темы создавать проблемы с параметрами коммерческой родительской темы? wp-includes не содержит шаблон подачи Когда следует использовать wp_register_script () с помощью wp_enqueue_script () и просто wp_enqueue_script ()? Проверка расширенных пользовательских полей

проверьте, активна ли зарегистрированная боковая панель и имеет ли содержимое виджета

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

function ql_widget( $widget, $widget_name, $element = 'sider' ){ if ( $widget ) { // widget name passed ## // check if widget is active - return html & widget content if true ## if ( is_active_sidebar( $widget ) ) { echo ' <div class="'.$element.'">'; dynamic_sidebar( $widget ); echo '</div>'; } else { // issue error if requested widget does not exist or is empty ## if ( ql_user_is_administator() ) { // user is admin ## if ( dynamic_sidebar( $widget ) ) { // empty ## $message = 'empty'; } else { // widget ID or name wrong ## $message = 'error'; } ?> <div class="error"><strong>Widget <?php echo $message; ?>:</strong> <?php echo $widget_name ? $widget_name : $widget ; ?></div> <?php } } } } 

Я вызываю это на странице, используя:

 // load widget ## // widget_id, widget name, class of containing element ## ql_widget( 'sidebar-general', 'Standard Sidebar', 'sider' ); 

Боковые панели правильно регистрируются с помощью register_sidebar () и имеют уникальный идентификатор, назначенный каждому.

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

Благодаря!

UPDATE – это рабочая функция: ссылка на pastebin

wp_get_sidebars_widgets(); вернет список всех боковых панелей и виджетов в каждом из них. Это может позволить вам проверить боковые панели без виджета

Вы можете проверить, активна ли панель и использует ли она (содержит виджеты с контентом), используя is_active_sidebar , вот пример …

 if ( is_active_sidebar( $sidebar ) ) { // Display some text } else { // Display none }; 

Где $sidebar – это имя, идентификатор или номер боковой панели, которую вы хотите проверить.

Обновить:

Вот предложение улучшить читаемость вашей функции,

 function ql_widget( $widget, $widget_name, $element = 'sider' ){ if ( $widget ) { $message = (ql_user_is_administator() ? 'empty' : 'error'); $widget_name = ($widget_name ? $widget_name : $widget); if ( is_active_sidebar( $widget ) ) { $html = '<div class="'.$element.'">'; $html .= dynamic_sidebar( $widget ); $html .= '</div>'; echo $html; } else { $html = '<div class="error"><strong>Widget '; $html .= $message; $html .= '</strong> '; $html .= $widget_name; $html .= '</div>'; echo $html; } } 

И если вы хотите, чтобы сообщение об ошибке появилось, если admin, затем оберните внутреннее содержимое инструкции else другим условным или измените else на elseif и запустите проверку для администратора и, возможно, завершите условие else чтобы удовлетворить все остальные результаты, например, для обычных пользователей. Ссылка Codex: http://codex.wordpress.org/Function_Reference/is_active_sidebar