web-dev-qa-db-ja.com

次および前の投稿リンクから特定のカテゴリからの投稿を除外する

私はこれをたくさん探していました...しかし私が得るすべては私が必要とするものではありません。私は、(同じカテゴリ内だけではなく、公開日に基づいて)single.phpに次のリンクと前のリンクを表示するだけで、カテゴリをスキップします。そのため、次の(または前の)投稿がカテゴリID 402に含まれる場合は、その投稿をスキップして次の(または前の)投稿を取得します。

この単純なコード<?php next_post_link(); ?>は非常にうまく機能しますが、カテゴリ402にある投稿をスキップするにはそれが必要です。投稿のタイトルも使用したくありません。リンクとして "Next"と "Previous"に追加されたリンクだけです。アンカー

ありがとうございました

1
whitelord

4番目のパラメータ$ excluded_terms を使用します。http://codex.wordpress.org/Function_Reference/next_post_link

<?php next_post_link( $format, $next, $in_same_term = true, $excluded_terms = '402', $taxonomy = 'category' ); ?>

Previous_post_link と同じhttp://codex.wordpress.org/Template_Tags/previous_post_link

$previous = '<span class="meta-nav">Previous Post</span>';
$next = '<span class="meta-nav">Next Post</span>';

<?php previous_post_link( $format, $previous, $in_same_term = true, $excluded_terms = '402', $taxonomy = 'category' ); ?>

あるいは、Twenty Fourteenに含まれるもののようなテンプレートタグを作成することもできます。

if ( ! function_exists( 'twentyfourteen_post_nav' ) ) :
/**
 * Display navigation to next/previous post when applicable.
 *
 * @since Twenty Fourteen 1.0
 */
function twentyfourteen_post_nav() {
    // Don't print empty markup if there's nowhere to navigate.
    $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( false, '', true );
    $next     = get_adjacent_post( false, '', false );

    if ( ! $next && ! $previous ) {
        return;
    }

    ?>
    <nav class="navigation post-navigation" role="navigation">
        <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'twentyfourteen' ); ?></h1>
        <div class="nav-links">
            <?php
            if ( is_attachment() ) :
                previous_post_link( '%link', __( '<span class="meta-nav">Published In</span>%title', 'twentyfourteen' ) );
            else :
                previous_post_link( '%link', __( '<span class="meta-nav">Previous Post</span>', 'twentyfourteen' ) );
                next_post_link( '%link', __( '<span class="meta-nav">Next Post</span>', 'twentyfourteen' ) );
            endif;
            ?>
        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}
endif;
1
Brad Dalton

これがカスタム投稿タイプの目的です。無関係なタイプのコンテンツを区別します。あなたの説明では、カテゴリ402にはサイトをナビゲートするときに読者に関連するコンテンツが含まれていないように聞こえますが、next/prevリンクがあなたが扱う必要がある唯一の場所ではなく、最近の投稿やコメントウィジェット、RSSフィードの生成、そしてあなたが同様にハックする必要があるだろうすべての種類のプラグインがあるでしょう。

あなたはおそらくそれらのnext/prev関数をハックすることができます、あるいはもっと良いことに代わりにあなた自身のものを書くことができますが、将来の証明方法は代わりにCPTを使うようにあなたのコードを変えることです。

0
Mark Kaplun