Удаление определенных виджетов с определенных страниц - PullRequest
0 голосов
/ 09 мая 2019

У меня есть определенные страницы, которые мне нужны, чтобы определенные виджеты были скрыты от боковой панели. У меня

-5 страниц, которые должны отображать только nav_menu-1

-6 другие страницы, которые должны отображать только nav_menu-2

-и затем все одиночные сообщения, которые должны показывать только nav_menu-3

У меня есть этот код

add_filter( 'widget_display_callback', 'widget_display_2', 50, 3 );
function widget_display_2( $instance, $widget, $args ){
if ( is_single() && $widget->id == 'nav_menu-1' ) {
    return false;
}
return $instance;
}

но как лучше всего вставить все мои страницы и идентификаторы виджетов для достижения моей цели?

1 Ответ

0 голосов
/ 09 мая 2019

Это может звучать странно, но почему бы не использовать три разные боковые панели и вызывать их по условию. Таким образом, ваша тема станет более гибкой. Всегда плохо жестко закодировать это в своей теме или плагине.

// Register Sidebars
function custom_sidebars() {

$args = array(
    'id'            => 'custom-sidebar-1',
    'name'          => __( 'Custom Sidebar 1', 'text_domain' ),
);
register_sidebar( $args );

$args = array(
    'id'            => 'custom-sidebar-2',
    'name'          => __( 'Custom Sidebar 2', 'text_domain' ),
);
register_sidebar( $args );

$args = array(
    'id'            => 'custom-sidebar-3',
    'name'          => __( 'Custom Sidebar 3', 'text_domain' ),
);
register_sidebar( $args );

}
add_action( 'widgets_init', 'custom_sidebars' );

... после добавления этого в файл functions.php вы можете вызывать разные боковые панели с условными функциями.

<?php
/** call custom sidebar on single.php template **/
if ( is_single() ){
dynamic_sidebar( 'custom-sidebar-1' );
}
?>

<?php
/** call custom sidebar on page.php template (all pages) **/
if ( is_page() ){
dynamic_sidebar( 'custom-sidebar-2' );
}
?>

<?php
/** call custom sidebar on multiple pages by id **/
if ( is_page( array( 11, 22, 33, 44 ) ) ){
dynamic_sidebar( 'custom-sidebar-3' );
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...