web-dev-qa-db-ja.com

同じ分類用語のカスタム投稿タイプの前後のリンク

分類名が'portfolio_category'のカスタム投稿タイプname->('portfolio')があります。

私が欲しいのは、single-portfolio.phpという単一のページファイルに次と前のリンクを追加することです。どちらかのリンクをクリックすると、同じ投稿タイプで同じ分類用語の次または前の投稿にリダイレクトされます。

私はnext_post_link()previous_post_link()を使いましたが、それはシングルポストでしか動作せず、シングルカスタムポストタイプでは動作しないようです。

任意の提案は大歓迎です。

previous_post_link() および next_post_link() カスタム投稿タイプでは完全に機能します。このコードをあなたのsingle-customposttype.php(あなたの場合はsingle-portfolio.php)に貼り付ける必要があります。

<div class="previous-post-link">
                <?php previous_post_link('%link', '<< Previous Post', $in_same_term = true, $excluded_terms = '', $taxonomy = 'the-custom-taxonomy-associated-with-your-custom-post-type'); ?>                    
            </div>

            <div class="next-post-link">
                <?php next_post_link('%link', 'Next Post >>', $in_same_term = true, $excluded_terms = '', $taxonomy = 'the-custom-taxonomy-associated-with-your-custom-post-type'); ?>                    
            </div> 
2
Nadeem Khan

$taxonomynext_post_link の両方のprevious_post_linkパラメータはWordpressバージョン3.8で導入されました。

$in_same_termパラメーターがtrueに設定されている場合は、$taxonomyパラメーターを希望の分類法に設定する必要があります。デフォルトではcategoryに設定されています。 post_formatも分類法です

例:

next_post_link( '%link', 'Next post in category', TRUE, ' ', 'post_format' );

ちょっと注意してください、 next_postprevious_post を使わないでください。 Wordpressバージョン2.0.0からすでに減価償却されています。 wp-includes/deprecated.php#L121 および wp-includes/deprecated.php#L158 を参照してください。

_編集_

単一の投稿リンクは、現在の投稿の投稿タイプが隣接する投稿を取得するために使用されるのと同じ投稿タイプ内の投稿間を自動的にページ送りします。次と前の投稿のリンクで使用されているソースコード get_adjacent_post() を確認してください。 1550行目(特にバージョン4.1用)に特に注意してください。

1550    $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $current_post_date, $post->post_type ), $in_same_term, $excluded_terms );
1
Pieter Goosen

このコードをあなたのsingle-cpt.phpファイルに追加してください。

<?php previous_post_link('%link', 'Previous in CPT', TRUE) ?>
<?php next_post_link('%link', 'Next in CPT', TRUE) ?>

Cptはカスタム投稿タイプの名前です。

0
Brad Dalton