如何编辑侧边栏

时间:2014-05-20 11:13:16

标签: php wordpress

我是wordpress的新手,但是我求帮忙,所以我想帮忙。 我有这样一堆代码,显示一切都很好。事实是,我需要在每个页面上添加一个不同的子菜单。所以我想过如果(current_page ==' page')显示bla bla bla ... 但是在functions.php中,我发现只有关于侧栏的代码才能保留菜单:

 function wp_hot_kindergarten_widgets_init() {
    global $theme_slug;
    $doc = new DOMDocument(); 
    $doc->load(FUNCTIONS_PHP_BASEPATH . DIRECTORY_SEPARATOR .'theme.xml');
    $doc->normalizeDocument();
    $XTheme     =  $doc->getElementsByTagName( "extension" )->item(0);
    $XPosEL = $XTheme->getElementsByTagName( "positions" )->item(0);
    $XPositions = $XPosEL->getElementsByTagName( "position" );  

    $all_layouts_str = '';

    $XConfig    = $XTheme->getElementsByTagName( "config" )->item(0);  
    $XFDS       = $XConfig->getElementsByTagName( "fields" )->item(0);  
    $XFieldSets = $XFDS->getElementsByTagName( "fieldset" );  
    foreach( $XFieldSets as $XFieldSet ) 
    {
        $XFields = $XFieldSet->getElementsByTagName( "field" );
        foreach( $XFields as $XField){
          if($XField->getAttribute("type") == 'designlayout'){
            $all_layouts_str .= (get_option($theme_slug.'_'.$XField->getAttribute("name")).'  ');
          }
        }
    }

    foreach($XPositions as $XPosition){
        if($XPosition->getAttribute('layout_embeded') == 'true' || strpos(strtolower($all_layouts_str),strtolower($XPosition->nodeValue).'=')){
            register_sidebar( array(
                'name' => ucfirst($XPosition->nodeValue),
                'id' => strtolower($XPosition->nodeValue),
                'description' =>  $XPosition->getAttribute("description"),
                'before_widget' => $XPosition->getAttribute("before_widget"),
                'after_widget' => $XPosition->getAttribute("after_widget"),
                'before_title' => $XPosition->getAttribute("before_title"),
                'after_title' => $XPosition->getAttribute("after_title")
            ));
        }
    }
}

并在页面上显示为:

   dynamic_sidebar(ucfirst($mpostion[0]));

我应该如何,或者我可以添加if条件?抱歉,这是我使用WordPress的第一步,我迷失了自己。

1 个答案:

答案 0 :(得分:0)

我相信您可以使用wp_nav_menu()功能根据页面显示菜单。

Eg.
<?php
if (current_page == "xyz") {
    wp_nav_menu( 'menu' => 'xyz-menu' );
}
else if (current_page == "abc") {
    wp_nav_menu( 'menu' => 'abc-menu' );
}
?>

其中xyz-menuabc-menu是您在后端创建的菜单。