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はうまく形成されていません。

分類法(コーデックスから取得したスニペット)の場合は次のようになります。

$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 に答える