WP; получить боковую панель, которая плохо работает с получением содержимого, когда внутри цикла запрашиваются страницы


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

У меня есть content-page.php файл, в котором есть функции get_content и get_sidebar. Если я перейду на эту страницу на передней панели, я увижу как свой контент, так и боковую панель.

На home.php страница, я загружаю серию страниц , используя $the_query = новый WP_Query, а затем внутри этого запроса, используя цикл и внутри этого цикла, вызывая content-page.php .

Проблема это то, что если страница, которая загружается на home.php на странице есть боковая панель, по какой-то причине ничего не загружается после боковой панели ie. get_content() ничего не возвращает, comments_template() ничего не возвращает и т.д.

Вот (очень) упрощенная версия разметки, Домашняя страница:

$the_query = new WP_Query( array(
    'post_type' => 'page'));
    $x = 0;
    while ( $the_query->have_posts() ) :
        $the_query->the_post();

        get_template_part( 'content', 'page' );

    $x++;
    endwhile;
wp_reset_query();

Content-page.php :

<article <?php post_class(); ?>>  
    <header>
      <h1><?php the_title(); ?></h1>
    </header>

    <div class="entry-content">
        <?php include( TEMPLATEPATH . '/sidebar.php'); ?>
        <?php the_content(); ?>
    </div><!-- .entry-content -->
</article><!-- #post-<?php the_ID(); ?> -->

Sidebar.php :

<div id="secondary" class="widget-area" role="complementary">
    <?php do_action( 'before_sidebar' );
    dynamic_sidebar( 'sidebar-1' ); ?>
</div><!-- #secondary .widget-area -->

Есть ли что-то очевидное, чего мне здесь не хватает? Я уже некоторое время работаю над этим делом. Как всегда, мы будем очень признательны за любую помощь.

Author: Eric Brockman, 2016-03-01

4 answers

В Wordpress существует два типа запросов общего цикла: 1) основной запрос, который задается на основе HTTP-запроса, и 2) "вложенные циклы", которые могут изменять основной запрос. Поскольку основной запрос управляет многими вещами, такими как "есть ли боковая панель?" или "какой шаблон страницы следует использовать?", вы можете отправить только один из этих типов. Вы не можете вызвать отдельную боковую панель (или вызвать отдельный шаблон страницы, если на то пошло) из вложенного цикла. Для этого вам придется переделать базовый Wordpress система боковой панели. Я думаю, что лучшим выбором для того, что вы пытаетесь сделать, было бы предоставить просто какой-то динамический контент и назвать его боковой панелью.Другими словами, Wordpress уже решил, что происходит с боковой панелью, когда она была вызвана в первый раз. В системе нет способа по умолчанию обрабатывать повторный вызов боковой панели. Возможно, с использованием shoftcodes или фильтра после каждой итерации подцикла.

 0
Author: Jim Maguire, 2016-03-05 02:36:24

Закрыть ")" открыть скобки.

$the_query = new WP_Query( array( 'post_type' => 'page') );
 0
Author: meet, 2016-03-01 10:02:08

Вставьте этот код в content-page.php

<?php get_template_part( 'sidebar' ); ?>
        <?php the_content(); ?>

Попробуйте удалить do_action( 'before_sidebar' );

 0
Author: Prakash Rao, 2016-03-04 21:57:38

Вы могли бы попробовать:

include( locate_template( 'content-page.php', false, false ) );

Вместо:

get_template_part('content', 'page');

 0
Author: fostertime, 2016-03-04 22:26:53