質問: 'publish' ORDER BY $wpdb->posts.post_date DESC LIMIT $now_post_num, $get_post_num"; ``` となっているんですがどのようにアプローチすればよいでしょうか? ざっくりとした説明で申し訳ありません。 読んでいただいて知っている方がいましたらご教授お願いしたいです。
回答: いくつか確認しておきたいのですが、 ##### 1.これは**別WordPressのデータベースへ接続しなければならない為にわざわざSQL文を書いている**という解釈で宜しいのでしょうか? もし違うのであればSQL文を書く必要はありません。組み込み関数で処理可能ですし、そうすべきです。 -> もし、別WordPressのデータベースから取得しなければならなかった場合 ・アイキャッチ画像はpostmetaテーブルに格納されています。 /* 間違えてましたので訂正... */ ・投稿に関連づいているアイキャッチのデータはpostmeta内の`meta_key = '_thumbnail_id'`に格納されています。 ・アイキャッチそのもののデータはpostmeta内の`meta_key = '_wp_attachment_metadata'`に格納されています。 ・`meta_key = '_thumbnail_id'`のpost_idが「投稿ID」、meta_valueが`meta_key = '_wp_attachment_metadata'`のpost_idに対応しています。 つまるところ、3つのテーブルを結合するSQL文が必要になります。(※これでも取れました) ただ、結構ハードルが高くなる場合は 一つめのSQLで投稿ID、post_date,post_contentをまず取得して、 その数を元に、新たにもう一つSQL文を作成してもいいのかな、と。 実際、SQLで取得しようとすると結構面倒です。 (言葉で構造を説明していても混乱してしまいますね...) ##### 2.wpdbクラスの使い方`$wpdb->'テーブル名'`です。 テーブルを結合しない限りカラム名等にまで記述する必要はありません。 提示されているコードでは下記のように書き換えられます。 ``` SELECT ID,post_date,post_content FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date DESC LIMIT $now_post_num, $get_post_num ``` ただし、`$wpdb`は表示させる側のWordPressの様々なデータが格納されている変数なので 他の変数を使用し ``` $another_db = new wpdb(user,pass,dbname,host); $test = $another_db->get_results("..."); ``` 等したほうが良いでしょう。 また、ここで`post_status = 'post'`となっていますが postは「投稿」であって、「カスタム投稿」を指していませんが、**取得したいのは「カスタム投稿」で正しいのでしょうか?**