こんにちは
こちらのページをご確認下さい。
データベース構造(CODEX)
いくつかのテーブルに 〜_id というカラムがありますが、それらと wp_posts の ID がいわゆる ID です。
そのテーブルごとに連番が振られますので、ターム、タクソノミー、記事(固定ページは投稿と同じテーブル)、ユーザー の間で ID は重複します。
ありがとうございます。
記事と固定ページで連番にならないだけで全部ユニークなのかと思ってしまいました。
これ全てまとめて連番にするのって、おかしな構造でしょうか?
これ全てまとめて連番にするのって、おかしな構造でしょうか?
全てまとめて連番にするメリットがいまいち分からないのですが、どのような意図があるのでしょうか?
意図はとりあえず置いておくとして、プラグインをざっと探してみましたが見つかりませんでした。自前で実装するにはそれなりの工数(作業量)が掛かると思います。また、今後のメンテナンスを考慮するとおすすめはできません。
これ全てまとめて連番にするのって、おかしな構造でしょうか?
意図がちょっと分からないのでお望みの回答か分からないですが、システム全体で全てのオブジェクトの ID がユニーク(重複しない)というのはおかしな設計ではありませんし、実際にそういうシステムは存在すると思います。
WordPress はそうではありませんが、それもおかしな設計ではありません。
お二方貴重なアドバイスをありがとうございます。意図についてご返答致します。
意図はタイムラインの検索です。「フォローユーザーによる投稿か、フォロータームを持つ投稿を、WP_Query
で検索してタイムラインページで表示する」という仕組みを考えています。
たとえば「”Aさん”をフォローし、”ニュース”をフォローしている」という状況であれば、「Aさんのツイート」と「ニュースについてのツイート」がタイムラインに流れるという仕組みです。
一応ですが、この仕組みは次の方法で実装できました。
Aさんが「良いニュースがあるよ」とツイートすれば、そのpost_meta
に、
➀meta_author
というキーで、AさんのuserID
を持たせる。
➁meta_terms
というキーで、ニュースのtermID
を持たせる。
ということをして、➀➁についてWP_Query
のmeta_query
でORを使うという方法です。
しかしmeta_query
でのORを多用したくないと感じましたので、ならば
➂meta_timeline
というキーで、AさんのuserID
とニュースのtermID
をごちゃ混ぜに持たせる。
ということをすれば、ORが不要になるだろうと考えました。
以上の経緯から、ごちゃ混ぜだから、termID
とuserID
はユニークであってほしい。という意図が生まれたわけです。
SQLが書けないのでこの策になりましたが、やはりユニークなIDにした場合は「>今後のメンテナンス」への不安を強く感じます。
もし他の案やアドバイス等ございましたら引き続き頂戴してもよろしいでしょうか。
WP_Query
を2回流す方法(フォローユーザーによる投稿を取得し、フォロータームを持つ投稿を取得し、array_merge
する方法)は考えていませんが…でも上の不安があれば2回流すべきでしょうか。
どうぞ宜しくお願い致します。
要するに、自分で post_meta に入れた値を自分で検索するときにユニークになって欲しいということですね?
それであれば、プリフィックスをつけてユニークな ID を作って post_meta に入れればよいと思います。
例)
投稿:post_99
ターム:term_99
@munyagu 様
ありがとうございます!そうします!
ながながと失礼いたしました。アドバイス感謝申し上げます。