2016-11-27 13 views
2

私は記事の投稿ページ(single.php)の次のリンクと前のリンクをカスタムクエリで取得しようとしています。私はprevious_post_link()next_post_link()関数を使ってみましたが、IDで投稿を取得します。あなたが言うことができるよう次の記事と前の記事をWordPressのカスタムクエリでリンクします

$args = array(
    'post_type' => 'auction_dates', 
    'paged' => $paged, 
    'posts_per_page' => 1, 
    'meta_key' => 'date_of_auction', 
    'orderby' => 'meta_value_num', 
    'order' => 'ASC'); 

、ポストはカスタムフィールド「date_of_auction」、ないIDによって順序付けられている:私はインデックスページで次のループクエリを持っています。 IDの代わりにそのカスタムフィールドを使用して、私の単一の記事ページ上の次のおよび前の投稿へのリンクを取得したい。何か案は?

答えて

0

機能get_adjacent_post()を使用できます。この機能を使用すると、次のポストオブジェクトと前のポストオブジェクトを取得できます。次の投稿の前と後を検索するには、3番目のパラメータをtrueに設定する必要があります。最後のパラメータは、選択され、制限されたタクソノミー内の隣接する投稿を得ることを可能にする。

$previous_adjacent_post = get_adjacent_post(true,'',true, 'product_cat'); 
$next_adjacent_post = get_adjacent_post(true,'',false, 'product_cat'); 

if(is_a($previous_adjacent_post, 'WP_Post')){ 
    $previous_link = get_permalink($previous_adjacent_post->ID); 
    $previous_title = $previous_adjacent_post->post_title; 
} 
if(is_a($next_adjacent_post, 'WP_Post')){ 
    $next_link = get_permalink($next_adjacent_post->ID); 
    $next_title = $next_adjacent_post->post_title; 
} 

この例でis_a()条件は、応答が(応答が空またはヌルであるように文字列からオブジェクトを取得しようとしている)が発見されていない場合にエラーを回避します。

詳細および例get_adjacent_post()

カスタムフィールドでフィルタする、最終的にフィルタ"get_{$adjacent}_post_where":を使用することができます。

EDIT:あなたが追加したリンクと説明して

、あなたが使用するプラグインでこれを行うことができますようだ:

in_same_meta

がかどうかを次/前を示します投稿は現在の投稿と同様の カスタムフィールド値を持つ必要があります。一致させるカスタムフィールドの名前を に渡す必要があります。あなたは「出版社」という名前のカスタムフィールド を持っていた、そしてあなたは、次/前のリンクは同じ出版社から タイトルにつながるしたい場合たとえば、:

<?php next_post_link_plus(array('in_same_meta' => 'publisher')); ?> 

そのin_same_metaではありませんのでご注意くださいカスタムフィールド ソートと互換性があります。 order_byが 'custom'または 'numeric'に設定されている場合、 in_same_metaは無効になります。

希望すると助かります!

+0

私は全く私を助けてくれるのではないかと恐れています。私はこの結果を得るためにこのプラグインを使用しなければなりませんでした。 http://www.ambrosite.com/plugins/next-previous-post-link-plus-for-wordpress –

+0

私は努力を感謝しますが、そのコードは私のために働いていませんでした。これは私に正しいリンクを与えたものです: <?php next_post_link_plus(array( 'order_by' => '数値'、 'meta_key' => 'date_of_auction')); ?> –

+0

ネイティブのWordPress関数を使用するのか、プラグインのみを使用したいのか分かりませんでした。プラグインの動作をWordPressの機能で再現したい場合は、これが可能です。別の質問です。 – Benoti

関連する問題