web-dev-qa-db-ja.com

prev_post_linkおよびnext_post_linkにmeta_key/meta_value条件を指定します

eventというカスタム投稿タイプ(CPT)があります。すべてのイベントには、meta_keyというevent_dateが関連付けられています。

単一のイベントを表示するときに、空のevent_dateを持つイベントがすべてのイベントのリストおよび前の/次のイベントナビゲーションに表示されないようにする必要があります。また、event_date meta_keyでイベントを注文したいと思います。

私は、event_dateが空のイベントを除外し、pre_get_postsフックにフックすることで、イベントの一覧全体でそれらを正しく順序付けることができました。

プラグインなしでprev_post_linkおよびnext_post_link関数にフックしてmeta_key select条件およびmeta_key order条件を指定することは可能ですか?それのためのフックはありますか?

[P. note]: Ambrosite Next/Previous Post Link Plus プラグインも使ってみました。 meta_keyでイベントを並べる方法を見つけました。ただし、event_date meta_valueが空のイベントは、単一のイベントを表示したときにprev/nextナビゲーションに表示されたままです。

プラグインの前にWPをフックすることは不可能だと思います。なぜならそれはそれ自身のSQLを構築すると思うからです。除外するすべてのイベントIDのリストと共にex_postsを使用できますが、それはdbに対する追加の照会を意味します。

ありがとう、ダーシャ

2
dashaluna

結局、 Ambrosite Next/Previous Post Link Plusプラグイン を使ってしまいました。

空のevent_dateメタキーについて - メタキーの値が正しくないと投稿が保存されないようにコードを追加しました。

この記事を見てください。

  1. 公開時のWordpressの投稿ステータスの変更
  2. メタデータフィールドが無効な場合、カスタム投稿タイプの投稿を公開しない
0
dashaluna

prevとnext_post_linkは最終的に get_adjacent_post 関数を呼び出してdbに問い合わせます。これには$ join $ whereと$ sort varsがあります。

1
Milo