0

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

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

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

这是我的查询:

$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 分钟,但没有任何成功。

希望能解释我的错误。

4

2 回答 2

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>";
            }

希望这对你有用

于 2013-02-05T07:36:28.973 回答
0

你的论点WP_Query没有很好的形成。

以下是分类学应该是这样的(摘自Codex的片段):

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

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

while( $query->have_posts() ):
  $query->the_post();
  // It is now that get_permalink() will work
endwhile;
于 2013-02-05T08:03:46.203 回答