You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在特定页面/单篇文章中控制侧边栏nav_menu小部件显示?

实现侧边栏小部件按页面/文章类型精准显示

需求回顾

  • 5个指定页面仅显示nav_menu-1
  • 另外6个指定页面仅显示nav_menu-2
  • 所有单篇文章(single-posts)仅显示nav_menu-3

修改后的完整代码

add_filter( 'widget_display_callback', 'widget_display_2', 50, 3 );
function widget_display_2( $instance, $widget, $args ){
    // 定义仅显示nav_menu-1的页面ID数组,请替换为你的实际页面ID
    $show_menu1_pages = array(1, 2, 3, 4, 5);
    // 定义仅显示nav_menu-2的页面ID数组,请替换为你的实际页面ID
    $show_menu2_pages = array(6, 7, 8, 9, 10, 11);

    // 单篇文章页面逻辑:只保留nav_menu-3,隐藏另外两个菜单
    if ( is_single() ) {
        if ( $widget->id == 'nav_menu-1' || $widget->id == 'nav_menu-2' ) {
            return false;
        }
        return $instance;
    }

    // 指定页面仅显示nav_menu-1:隐藏nav_menu-2和nav_menu-3
    if ( is_page($show_menu1_pages) ) {
        if ( $widget->id == 'nav_menu-2' || $widget->id == 'nav_menu-3' ) {
            return false;
        }
        return $instance;
    }

    // 指定页面仅显示nav_menu-2:隐藏nav_menu-1和nav_menu-3
    if ( is_page($show_menu2_pages) ) {
        if ( $widget->id == 'nav_menu-1' || $widget->id == 'nav_menu-3' ) {
            return false;
        }
        return $instance;
    }

    // 其他页面/场景:默认保留原小部件显示逻辑
    return $instance;
}

关键说明

  1. 页面ID替换:你需要把数组里的数字换成实际的页面ID——在WordPress后台编辑页面时,地址栏里的post=xxx中的xxx就是页面ID。
  2. 逻辑分层:代码按「文章页→指定菜单1页面→指定菜单2页面」的顺序判断,确保每个场景的优先级清晰,不会冲突。
  3. 小部件控制:通过return false直接隐藏不需要的小部件,return $instance保留需要显示的小部件,逻辑直观易懂。

内容的提问来源于stack exchange,提问作者user10165750

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:19:30