###前提・実現したいこと
WordPressの$wpdbで、タグに紐づいている公開記事のみを習得したいです。
例)
タグ情報
タグ名 | term_id |
---|---|
果物 | 18 |
記事情報(全てタグ「果物」に紐づき)
記事名 | ID | ステータス |
---|---|---|
レモン | 10 | private |
メロン | 20 | publish |
バナナ | 21 | publish |
スイカ | 22 | publish |
→ タグ「果物」に該当 & ステータス「publish」の記事のみ取得したい(メロン、バナナ、スイカ)
###試したこと
①まず、「wp_term_relationships」テーブルにアクセスし、タグに紐づく記事の「object_id」を取得。
PHP
1<?php 2global $wpdb; 3$myrows = $wpdb->get_results( "SELECT object_id FROM $wpdb->term_relationships WHERE 18" ); 4$gaitou = array(); //空の配列を用意 5foreach ($myrows as $value) { 6 $gaitou[] = $value->object_id; //ループを回して配列にobject_idを格納していく 7} 8 9■配列の中身 10<?php var_dump($gaitou); ?> 11 12↓↓ 13 14array (size=4) 15 0 => string '10' (length=2) 16 1 => string '20' (length=2) 17 2 => string '21' (length=2) 18 3 => string '22' (length=2) 19
②次に「wp_posts」にアクセスし、ステータスが「publish」の記事の「ID」のみ取得
PHP
1 2$kizi = "ID = '$gaitou[0]' OR ID = '$gaitou[1]' OR ID = '$gaitou[2]' OR ID = '$gaitou[3]'"; 3 4$data = $wpdb->get_results( " 5 SELECT post_title 6 FROM $wpdb->posts 7 WHERE $kizi 8 AND post_status = 'publish' 9" ); 10foreach ($data as $value) { 11 echo $value->post_title . "<br />"; 12} 13 14↓↓結果 15 16レモン 17メロン 18バナナ 19スイカ 20 21※非公開のレモンも取得されてしまします。 22
###発生している問題
②のwp_postsで取得時、WHEREで「post_status = 'publish'」を指定しても、「post_status = 'private'」のものまで取得されてしまいます。
タグに該当する記事の件数取得のためこのような処理が必要なのですが、コードで間違っている箇所などございますでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/28 02:10