web-dev-qa-db-ja.com

カスタムフィールド値で隣接する投稿を並べ替える方法(prev/next)?

私は More Fields および More Types プラグインを使用してproductというカスタム投稿タイプを作成しています。このカスタム型はPost型に基づいています。

フィールドの1つはlotという名前で、オークションのLot#を表す整数です。

私はlotフィールドで順序付けされた、各Lotのリンクのリストを生成するカスタムカテゴリページを作成しました。これはとてもうまくいきます。

$args = array(
  'post_type' => array('product'), 
  'cat' => 3,
  'meta_key' => 'lot',
  'orderby' => 'meta_value_num',
  'order' => 'ASC'
);

Hしかしながら......あなたがたくさんのうちの1つをクリックするとき、前と次の投稿リンクはもはやlotフィールドによって順序付けられず、それらは公開日によって順序付けられます(それはWP default) previous_post_link()next_post_link()のデフォルトのソート順を変更して、発行日の代わりにカスタムフィールドlotを使用する方法を見つけようとしています。

5
jessegavin

あなたは get_adjacent_post()source )であなたの状態に変えるためにSQLをフィルターにかけることができます:

$sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );

またはadjacent_post_link()source )でリンクをまとめてフィルタする:

echo apply_filters( "{$adjacent}_post_link", $format, $link );

PS $adjacentnextまたはpreviousです。

5
Rarst