在wordpress模板中包含几个部分。只显示其中一个

时间:2014-07-07 08:19:44

标签: php wordpress wordpress-theming

我在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>

在这个例子中,加载了blockarticles但没有访问。如果我切换div,只会加载访谈。

blockarticles / interview是自定义字段,并加载在部分内容中,如下所示:

    <?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不能为空,因为当我切换位置时它会显示文章和面试?

2 个答案:

答案 0 :(得分:4)

尝试在两个自定义查询结束后直接运行wp_reset_query()。我假设问题是第二个包含中的$post->ID没有返回正确的页面ID。

答案 1 :(得分:2)

在实例化新的WP_Query实例之前尝试并调用wp_reset_query()。有时我必须这样做以使其他WP_Queries正常工作。

还尝试在每个部分中的新WP_Query之前回显一些内容。如果它正确回声,模板加载正在正常工作。 E.g:

<?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