web-dev-qa-db-ja.com

前の/次の投稿へのリンクが間違ったカテゴリを表示しています

私のsingle.phpに、投稿の下の前後の投稿に対して同じカテゴリの投稿を表示させたいです。問題は、私の投稿はそれぞれ複数のカテゴリに属しており、それらは他のカテゴリのいずれか(24)から表示されるもの(27)までで表示されることです。それも意味がありますか?

カテゴリの例:

文字(親カテゴリー)(以下にリストされているサブカテゴリーID)

  • 24(代わりにこのカテゴリIDが表示されます。)
  • 27(これは表示したいカテゴリーIDです。)

さて、私の質問は、自動的に引っ張られるのではなく(27)どのようにして引っ張りたいカテゴリを選ぶのですか(24)?これが私がこれまでに試したことと共に、(私が見つけて、いじっていた)以下の私のコードです。

    <?php
    if (is_single() && in_category('stories')) {
        $post_id = $post->ID;
        $cat = get_the_category(); //I've tried changing this to my category (both ID and slug)
        $current_cat_id = $cat[0]->cat_ID;  //Also tried plugging ID and slug

        $args = array(
            'category' => $current_cat_id, //Also tried plugging ID and slug
            'orderby' => 'post_date',
            'order' => 'DESC'
        );
        $posts = get_posts($args);

        $ids = array();
        foreach ($posts as $thepost) {
            $ids[] = $thepost->ID;
        }

        $thisindex = array_search($post_id, $ids);
        $previd = $ids[$thisindex - 1];
        $nextid = $ids[$thisindex + 1];

        if (!empty($nextid)) {
            ?><div class="double-grid"><a rel="next" href="<?php echo get_permalink($nextid) ?>"><div class="image-tile tile-on-archive-page" style="background-image: url('<?php echo get_the_post_thumbnail_url($nextid); ?>'"> <div class="gold-button">LAST STORY >></div></div></a></div><?php
        }
        if (!empty($previd)) {
            ?><div class="double-grid"><a rel="prev" href="<?php echo get_permalink($previd) ?>"><div class="image-tile tile-on-archive-page" style="background-image: url('<?php echo get_the_post_thumbnail_url($previd); ?>'"> <div class="gold-button">NEXT STORY >></div></div></a></div><?php
        }
    }
    ?>
1
finamf92

ハザ!ここに投稿することを考えましたが、私はWordpress.orgの開発フォーラムで誰かと協力しました、そして彼らは実際に私のために問題を解決しました。

あなたはここで解決策と微調整を見ることができます: WordPress.orgフォーラムトピック

0
finamf92

$cat[0]が最初のカテゴリであり、最新ではないため、コードの問題は投稿の最初のカテゴリしか取得できないことです。

ループの内側:

<?php
previous_post_link( // prints the formatted link
    '<span>&laquo; %link</span>',  // beautifying around
    'Prev in this cat',            // the text (%link) to be used in the span above
    true,                          // confirm that you want only this category
    '',                            // no categories to exclude
    'category'                     // taxonomy name
);

echo " | "; // just a separator between next and prev

/* The same setup here, not shown to keep the answer clean */
next_post_link();

パラメータについては previous_post_link() をご覧ください。

あなたがThe Loopの外にいるなら、私に知らせてください、私は答えを更新して、追加のコードとコメントを提供します。

0
Max Yudin