Включить несколько частей в шаблон WordPress. Показывать только одну из них

#php #wordpress #wordpress-theming

#php #wordpress #wordpress-тематизация

Вопрос:

Я создал шаблон и две части в WordPress (php). В шаблоне я использую get_template_part() два раза, но загружается только первая.

     <div class="partial_blockarticle">
        <?php
          get_template_part('partials/blockarticle');
        ?>
    </div> 
    <div class="partial_interview">
        <?php
          get_template_part('partials/interviewpartial');
        ?>
    </div>
  

В этом примере загружены блочные статьи, но нет интервью. Если я переключу divs, будут загружены только интервью.

Блок-статьи / интервью являются пользовательскими полями и загружаются в части, подобные этой:

     <?php
    $pageID = $post->ID;
    // Build WP_Query() argument array

        $news = new WP_Query(array(
            'posts_per_page' => 6,
            'post_type' => 'blockarticles',
            'order' => 'desc',
            'orderby' => 'date',
            'meta_key' => 'blockarticle_page_parent',
            'meta_value' => $pageID 
        ));
        while($news->have_posts()): $news->the_post();
    ?>
    //Do stuff
  

Что я здесь делаю не так? $ news не может быть пустым, поскольку он показывает как статьи, так и интервью, когда я меняю место?

Ответ №1:

Попробуйте выполнить wp_reset_query() сразу после endwile для обоих пользовательских запросов. Я предполагаю, что проблема в том, что $post->ID во втором include не возвращает правильный идентификатор страницы.

Ответ №2:

Попробуйте вызвать wp_reset_query() перед созданием новых экземпляров WP_Query. Иногда мне приходилось делать это, чтобы заставить дополнительные WP_Queries работать должным образом.

Также попробуйте повторить что-нибудь прямо перед новым WP_Query в каждой части. Если она правильно отображается, загрузка шаблона работает успешно. Например.:

 <?php
// Test echo
echo 'does this work?';

$pageID = $post->ID;
// Build WP_Query() argument array

    $news = new WP_Query(array(
        'posts_per_page' => 6,
        'post_type' => 'blockarticles',
        'order' => 'desc',
        'orderby' => 'date',
        'meta_key' => 'blockarticle_page_parent',
        'meta_value' => $pageID 
    ));
    while($news->have_posts()): $news->the_post();
?>
//Do stuff
  

Комментарии:

1. Спасибо за ответ. К сожалению, это не сработало. Echos сработал.