2015-12-29 1 views
1

У меня есть один шаблон страницы, в котором будут отображаться 2 разных таксономических термина, и мне нравится называть 2 разных боковых панели для этих двух разных терминов. Этот шаблон сообщения является «single-recipe.php», в котором я называю «content-single_recipe.php». В "контент-single_recipe.php", я призываю 2 различных боковых панелей базы на различных условиях с условием заявления:Вызовите другую боковую панель в одном шаблоне страницы с if statement wordpress

ОДНОГО 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, он всегда вызывает «боковую салфетку».

ответ

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'); 
} 
+0

Я пробовал, но он все еще не работает. Если я использую 'get_term()', когда я пытаюсь повторить $ term, результата не будет. Но если я использую 'get_the_term_list()', я могу повторить результат. Я также изменяю '=' на '==', в выражении if результат отсутствует. – Sara

+0

Да. Я использовал неправильную функцию для этого. Сожалею. Исправлен мой код, повторите попытку. –

+0

Да, сейчас он работает хорошо. Кстати, могу я спросить, что означает '$ post-> ID'? Благодарю. – Sara

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'); 

После этого я добавить нормальный виджетами раздел с переменным набором:

// При использовании шаблона Нет Sidebar если (is_page_template ('не-sidebar.php')) : echo ''; // Else, показать боковую панель прочее: 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; 
Смежные вопросы