使用if statement wordpress在一个页面模板中调用不同的侧边栏

时间:2015-12-29 09:18:27

标签: php wordpress

我有1个单独的帖子页面模板,它将显示2个不同的分类术语,我喜欢为这2个不同的术语调用2个不同的侧边栏。这个帖子模板是" single-recipe.php",我在其中调用" content-single_recipe.php"。在" content-single_recipe.php"中,我使用条件语句根据不同的条件调用2个不同的侧边栏:

单RECIPE.PHP

    while ( have_posts() ) : the_post(); 
        get_template_part( 'content', 'single_recipe' ); 
    endwhile; // end of the loop. 

CONTENT-SINGLE_RECIPE.PHP

    php the_content();       

    // Here are code for sidebars:
        $term = get_the_term_list($post->ID, 'recipe_type'); 

        if ( $term = 'salad' ){
            dynamic_sidebar('sidebar-salad');
        }elseif($term = 'sandwich'){            
            dynamic_sidebar('sidebar-sandwich' );
        }

然而,无论$ term是什么,它总是称为" sidebar-salad"。

2 个答案:

答案 0 :(得分:1)

get_the_term_list为您提供HTML条款列表。请改用has_term。与==进行比较,而不是=。由于您使用=,即为变量赋值,您首先if将始终为真。

if( has_term( 'salad', 'recipe_type', $post->ID ) ){
    dynamic_sidebar('sidebar-salad');
}
elseif( has_term( 'sandwich', 'recipe_type', $post->ID ) ){
    dynamic_sidebar('sidebar-sandwich');
}

答案 1 :(得分:0)

 // Sidebars
 if(is_front_page())
    $op_sidebar_id = __('Sidebar Home','options');
// Single page and post type sidebars
elseif(is_attachment())
    $op_sidebar_id = __('Sidebar Attachment','options');
elseif(is_single())
    $op_sidebar_id = __('Sidebar Single','options');
elseif(is_page())
    $op_sidebar_id = __('Sidebar Page','options');
else
    $op_sidebar_id = __('Sidebar Home','options');

之后,我使用变量set添加正常的widgetized部分:

//如果使用No Sidebar模板     if(is_page_template('no-sidebar.php')):         回声'';    //否则,请显示侧栏     否则:         echo“”;

    if(function_exists('dynamic_sidebar') &&   
  dynamic_sidebar($op_sidebar_id)) :
    else :
    // Default to Home page sidebar if no widgets are set
        if(function_exists('dynamic_sidebar') && dynamic_sidebar(__('Sidebar
   Home','options'))) :
        else : _e('Add content to your sidebar through the widget control  
   panel.','options');
        endif;
    endif;
    echo '</div>';
  endif;