web-dev-qa-db-ja.com

次へカテゴリ内でのみリンクを投稿

WPの次の投稿リンク機能を使用して、「同じカテゴリの次の投稿」への次および前のナビゲーションリンクを表示します。これですべてがうまくいきます。カテゴリの「最後の」投稿、とにかく「次の」リンクが表示され、私がしたくないことをしています:別のカテゴリへのリンク最初の投稿。カテゴリの最初の投稿と同じように、カテゴリの最初の投稿を閲覧すると、「PREVIOUS」リンクが別の異なるカテゴリの前の投稿にリンクして表示されます。表示されません。

<div id="nav-above" class="navigation">
                    <div class="nav-previous"><?php previous_post_linknext_post_link( '%link', '<span class="meta-nav">' .     
    _x( '&#9668; Previous', 'Previous post link','category' ,TRUE ) . '</span>' ); ?></div>
                    <div class="nav-next"><?php next_post_link( '%link', '<span class="meta-nav">' . _x( 'Next &#9658; ', 'Next post link', 'category',TRUE ) . '</span>' ); ?> </div>
                </div><!-- #nav-above -->

http://codex.wordpress.org/Function_Reference/next_post_link

1
dmtnexer

これを行うには、 previous_post_link() および next_post_link() を使用します。

これらの関数はリンクを作成し、ページネーションに使用しているすべてのロジックを取り除くことができるはずです。

同じカテゴリの投稿にのみリンクする場合は、次のパラメーターを使用して関数を使用する必要があります。

previous_post_link('&laquo; %link', '%title', true);
next_post_link('%link &raquo;', '%title', true);

更新

最初/最後の投稿である前/次のリンクの問題に関する更新された質問への回答として、 previous_post_link()next_post_link()$in_same_termパラメーターに関連して:

次の投稿が現在の投稿と同じ分類用語内にある必要があるかどうかを示します。 「true」に設定すると、現在の分類用語の投稿のみが表示されます。投稿が親カテゴリとサブカテゴリの両方、または複数の用語にある場合、次の投稿リンクはそれらの用語のいずれかの次の投稿につながります。

それを念頭に置いて、最初の最後の投稿が複数のカテゴリに関連付けられている可能性がありますか?その場合は、wp_get_object_termsフィルターが役立つ場合があります。

元の質問(編集前)では、最初のカテゴリの投稿のみを検索していたため、ここにそのロジックを適用します。

<?php add_filter('wp_get_object_terms', 'my_custom_post_navigation', 4, 99); ?>
<div id="nav-above" class="navigation">
    <div class="nav-previous">
        <?php previous_post_link( '<span class="meta-nav"> %link </span>', _x( '&#9668; Previous', 'Previous post link', 'category') , TRUE ); ?>
    </div>
    <div class="nav-previous">
        <?php next_post_link( '<span class="meta-nav"> %link </span>', _x( 'Next &#9658;', 'Next post link', 'category') , TRUE ); ?>
    </div>
</div><!-- #nav-above -->
<?php remove_filter('wp_get_object_terms', 'my_custom_post_navigation', 99); ?>

上記に加えて、これをfunctions.phpファイルに配置する必要があります。

/**
 * Return only the first category when outputting the previous/next post links
 */
function my_custom_post_navigation($terms, $object_ids, $taxonomies, $args){

    return array_slice($terms, 0, 1);

}
5
David Gard

Single.phpページを親テーマからコピーして、子テーマのディレクトリに貼り付けます。 child-themeディレクトリからsingle.phpを開き、ファイルの最後に次のコードを追加します[get_footer();の前)。 ]

<?php
$post_id = $post->ID; // Get current post ID
$cat = get_the_category(); 
$current_cat_id = $cat[0]->cat_ID; // Get current Category ID 

$args = array('category'=>$current_cat_id,'orderby'=>'post_date','order'=> 'DESC');
$posts = get_posts($args);
// Get IDs of posts retrieved by get_posts function
$ids = array();
foreach ($posts as $thepost) {
    $ids[] = $thepost->ID;
}
// Get and Echo the Previous and Next post link within same Category
$index = array_search($post->ID, $ids);
$prev_post = $ids[$index-1];
$next_post = $ids[$index+1];
?>

<?php if (!empty($prev_post)){ ?> <a class="previous-post" rel="prev" href="<?php echo get_permalink($prev_post) ?>"> <span class="meta-icon"><i class="fa fa-angle-left fa-lg"></i></span> Previous</a> <?php } ?>

<?php if (!empty($next_post)){ ?> <a class="next-post" rel="next" href="<?php echo get_permalink($next_post) ?>">Next <span class="meta-icon"><i class="fa fa-angle-right fa-lg"></i></span> </a> <?php } ?>

このコードを追加した後、次のコードを子テーマのStyle.cssに貼り付けて、リンクのスタイルを設定します。

a.previous-post, a.next-post {
    color: #fff;
    background-color: #4498e7;
    text-align: center;
    height: 34px;
    line-height: 34px;
    font-size: 14px;
    border: 1px solid;
    padding: 0 20px;
    margin-bottom: 30px;
    text-transform: uppercase;
    border-radius: 4px;
    font-weight: bold;
}

a.previous-post:hover, a.next-post:hover {
    color: #4498e7;
    background-color: #fff;
}

a.previous-post {
    float: left !important;
}

a.next-post {
    float: right !important;
}

結果を教えてください:)

1
Surender

特定のカスタム分類またはtermカスタム投稿のprevまたはnext postリンクを制限する必要がある場合typecustom fieldまたはformatを試してください Ambrosite Next/Previous Post Link Plus 。このプラグインは、2つの新しいテンプレートタグを作成します—next_post_link_plusおよびprevious_post_link_plus—これらはコアWordPressのアップグレードバージョンですnext_post_linkおよびprevious_post_linkテンプレートタグ。

  • 次/前の投稿リンクをpost_date以外の列で並べ替えます(アルファベット順など)。
  • カスタムフィールドで次/前のリンクを並べ替えます(文字列と整数の両方の並べ替えがサポートされています)。
  • 完全なWordPress 3.3互換性。カスタム投稿タイプ、カスタム分類、投稿フォーマットのサポートを含みます。
  • 次の投稿がない場合は最初の投稿にループします(逆も同様です)。前/次の投稿ではなく、最初/最後の投稿を取得します(First | Previous | Next | Lastナビゲーションリンクの場合)。
  • リンク(WordPress 2.9以降)と共に投稿のサムネイルを表示します。
  • リンクタイトルを任意の長さに切り捨て、ツールチップにカスタムテキストを表示します。
  • 次/前のリンクのタイトル、日付、作成者、カテゴリ、メタ値を表示します。
  • %date変数のカスタム日付形式を指定します。
  • 次/前のリンクを同じカテゴリ、分類、形式、作成者、カスタムフィールド値、カスタム投稿IDリスト、またはカスタムカテゴリリストに制限します。
  • カテゴリ、カスタム分類、投稿形式、または個々の投稿IDを除外します。
  • ナビゲーションストリームをより細かく制御するための3つのカテゴリ除外方法。
  • 複数の次/前のリンク(たとえば、HTMLリストの次のN個のリンク)を返します。
  • 画面にエコーする代わりに、次/前のリンクのID、タイトル、日付、href属性、または投稿オブジェクトを返します。
  • 次/前のリンクが見つからない場合はfalseを返すので、テーマは条件付きで代替テキストを表示する場合があります。
  • 投稿タイプの順序およびその他の一般的な投稿並べ替えプラグインで動作します。
1
Muhammad Usama