2015-09-28 2 views
1

Я искал все утро для получения ответов безрезультатно. Я создаю шаблон WordPress на одну страницу. У меня есть домашняя страница, в которой используется один шаблон страницы, называемый one-page.php, который используется во всех других страницах. Heres the php из этого шаблона:Wordpress одностраничный шаблон с динамическим портфолио

<?php 
      $args = array(
       'post_type' => 'page', 
       'order' => 'ASC' 
      ); 
      $the_query = new WP_Query($args);   
     ?> 

     <?php if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?> 

     <?php get_template_part('content', 'page'); ?> 

     <?php endwhile; endif; ?> 

Этот код отлично работает. Все разделы могут использовать часть шаблона content-page.php, за исключением раздела портфеля, в котором я хотел бы использовать другую часть шаблона, которая привносит все пользовательские типы сообщений в портфолио.

Я пытался добавить условное, если заявления в обоих одной page.php и контент-page.php, как это:

<?php if (is_page('portfolio')) : ?> 
    //My portfolio custom post type loop is here 
    <? endif; ?> 

Но это не сработало - я думаю, что потому что функция is_page() будет проверять текущую страницу, которая отображается на главной странице. Вместо того, чтобы выяснить, на какой странице в данный момент дело, но я не уверен.

Может ли кто-нибудь помочь мне понять, как я могу условно загрузить раздел портфеля в отдельную часть шаблона?

ответ

1

Вы можете достичь этой проверки страницы слизняка, который вы можете получить в петле. Если это «портфолио» (или все, что вы сохранили), загрузите content-portfolio.php, в противном случае content-page.php. Что-то вроде этого:

 if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); 
    if ("portfolio" === $post->post_name) { 
     get_template_part('content', 'portfolio'); 
    } else { 
     get_template_part('content', 'page'); 
    } 
endwhile; endif; 
0

Установить состояние в файле

<?php 
if (have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); 
    if (is_page('portfolio')) { 
     get_template_part('content', 'portfolio'); 
    } else { 
     get_template_part('content', 'page'); 
    } 

endwhile; endif; 
?> 

создать файл шаблона с именем content-portfolio.php, который является копией content-page.php и поместите следующий код в нем. если он показывает «звонок», это означает, что ваш шаблон работает.

portfolio.php

<?php 
echo "portfolio.php"; 
die('Call'); 
?> 
Смежные вопросы