WordPress获取条款和帖子查询正在打破其他帖子

时间:2013-02-05 03:36:48

标签: wordpress

我有以下查询,该查询旨在显示分类中的术语列表,并在每个术语下,分配给该术语的帖子列表。

这会显示在我的single.php帖子页面左侧的侧边栏中。在页面的主要区域,显示实际的单个帖子。

但是,它不是显示当前的单个帖子,而是仅显示最近一个帖子的TITLE。

这是我的问题:

$terms = get_terms('benefit-cats');
    echo "<ul>";
    foreach ($terms as $term) {
        $wpq = array ('taxonomy'=>'benefit-cats','term'=>$term->slug);
        $query = new WP_Query ($wpq);
        echo "<li class=\"list-item\">".$term->name.""; //<a href=\"".get_term_link($term->slug, 'benefit-cats')."\"></a>//
        echo "<ul class=\"children\">";
        $posts = $query->posts;
        foreach ($posts as $post) {
            echo "<li><a href=\"".get_permalink()."\">".$post->post_title."</a></li>";
        }       
        echo "</ul></li>";
    }
    echo "</ul>";

我试过在代码中添加重置查询,但无济于事。我已经确定这是导致问题的特定部分:

$posts = $query->posts;
            foreach ($posts as $post) {
                echo "<li><a href=\"".get_permalink()."\">".$post->post_title."</a></li>";
            }

我到底错在了什么?我一直在努力拍摄30-40分钟而没有任何成功。

感谢我对错误的解释。

2 个答案:

答案 0 :(得分:2)

尝试使用

<?php
if ($query->have_posts() ) : while ($query->have_posts() ) : $query->the_post(); ?>
echo "<li><a href=\"".get_permalink()."\">".the_title()."</a></li>";
<?php endwhile; endif; wp_reset_query(); ?>

取代

$posts = $query->posts;
            foreach ($posts as $post) {
                echo "<li><a href=\"".get_permalink()."\">".$post->post_title."</a></li>";
            }

希望这对您有用

答案 1 :(得分:0)

WP_Query的论据形式不正确。

以下是分类法的用法(摘自Codex):

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'people',
            'field' => 'slug',
            'terms' => 'bob'
        )
    )
);

在你的论点正确之后,你应该loop结果:

while( $query->have_posts() ):
  $query->the_post();
  // It is now that get_permalink() will work
endwhile;