Dynamic Sidebar Conditional

时间:2013-07-25 作者:Howdy_McGee

EDIT

在此处找到答案:is_active_sidebar() Always Returns False

按用户:s_ha_dum

我正在动态创建侧栏,并为每个顶级页面注册它们:

Dynamically Register Sidebars For Each Top Level Page

问题是,我想测试该页面是否不存在边栏,以使用默认值:

if(is_dynamic_sidebar(get_the_title()))
                    dynamic_sidebar(get_the_title());
                else
                    dynamic_sidebar(\'Default\');
我试过测试

if(is_dynamic_sidebar(get_the_title()) && dynamic_sidebar(get_the_title())但出于某种原因,这只是重复了两次侧边栏内容。我还尝试了:

if(is_dynamic_sidebar(get_the_title()) && is_active_sidebar(get_the_title())但这只是删除了我的所有侧边栏,或者如果我更改&&|| 它将正常显示,除非从不使用默认值。在我的子页面上,它几乎没有使用边栏。有人对我能做什么有什么建议吗?

由于@Ravs更新了代码

if(!is_active_sidebar(get_the_title()))
    dynamic_sidebar(get_the_title());
else 
    dynamic_sidebar(\'Default\');

2 个回复
SO网友:Charles Clarkson

您正在使用的动态边栏代码使用最顶层页面的页面标题来命名边栏。get_the_title 查找您所在页面的标题,而不是最上面的页面标题。您需要一个函数来告诉您页面层次结构中最顶层页面的标题。

/**
 * Get the topmost page title.
 *
 * @link http://wordpress.stackexchange.com/questions/107843/dynamic-sidebar-conditional
 */
function wpse_107843_get_top_parent_page_title() {
    global $post;

    $parent_page = get_post( $post->ID );

    // Recurse to top parent.
    while ( $parent_page->post_parent != 0 )
        $parent_page = get_post( $parent_page->post_parent );

    return $parent_page->post_title;
}

SO网友:Ravinder Kumar

由于您在父页面上有特定的侧边栏和子页面的默认侧边栏,您的情况可能是(我假设您在wordpress循环中)

检查页面、父页面或子页面

  • 如果当前页面是父页面,请检查页面的侧栏小部件区域是否存在dynamic_sidebar 如果找到并调用了小部件侧栏,则返回True。如果未找到或未调用,则为False。

        if($post->post_parent == 0 ){ // if page is a parent page
          if(dynamic_sidebar(get_the_title()) && is_active_sidebar(get_the_title()))
             dynamic_sidebar(get_the_title());
          else 
             dynamic_sidebar(\'Default\');
        }
        else{ // if page is a sub page
          dynamic_sidebar(\'Default\');
        }
    

  • 结束

    相关推荐

    Admin sidebar customization

    我的新客户wordpress站点在管理侧栏中没有插件、外观或任何其他默认项。谁能告诉我这些是怎么出现的吗。该站点正在主站点的子目录中运行。它有自己的wordpress安装。主题是前面的rttheme16。提前谢谢。