web-dev-qa-db-ja.com

外部データを使用し、メタ値を使用せずにカスタム投稿タイプの列を並べ替える

私はカスタム投稿タイプ 'Book'を作成しました。そのデータは外部データベース(ISBN、作者など)に保存されています。 WordPressデータベースにはカスタム投稿ごとにISBNが含まれており、カスタムデータベース接続を介して正しいデータをカスタム投稿に接続します。

ISBN番号はカスタム投稿の[コンテンツ]フィールドに保存されます。シングルブックテンプレートは投稿コンテンツからISBNを抽出し、外部データベースからのISBNに基づいて追加情報を読み込みます。

バックエンドの「すべての本」ページで、ソート可能な列を使用したい(たとえば、著者名でソートする)。カスタム投稿タイプの並べ替えはメタ値でうまく機能することを私は知っていますが、カスタム投稿タイプのデータは別のデータベースに格納されているため、これらのメタ値は存在しません。外部データベースのデータを使用して投稿を並べ替える方法はありますか(つまり、重複データを含むメタ値を使用しないことで)。

ちなみに、私はこれを最初から作成していますが、この場合の解決策はプラグインではありません。

1
Thomas

私がそれを正しく理解している場合、あなたのワークフローは投稿をクエリし(通常のWPメカニックを介して)、外部データベースのデータを表示しますbut外部データに基づいてソートしたい。

WPは、ソートのために独自のデータよりも主にSQLに依存しているため、これは簡単なことではありません(ミラーリングを行わないでください)。

couldを実装する方法の1つ(エントリデータと外部データベースのパリティを想定)は、thatデータベースを並べ替えに使用します。

  1. 必要な並べ替えのあるエントリについて、外部データベースを照会します。
  2. ISBNエントリのセットを取得します。
  3. エントリに対応するWPデータベースからの投稿をクエリします。
  4. この投稿のセットでメインクエリをオーバーライドします(post__inクエリ引数とorderby=>post__inなど)。

かなりのラウンドアバウトですが、データミラーなしで他の方法を考えることはできません。

1
Rarst