wordpress で特定の投稿の termid を取得するための SQL クエリを教えてください。これを取得するビルド関数のワードプレスを知っています。しかし、生の SQL クエリが必要です。
2 に答える
SELECT ID FROM wp_posts WHERE ...
これは、WordPress の典型的な単一インストールを想定しています。マルチサイト インストールおよびテーブル プレフィックスが変更されたインストールでは、posts テーブルの wp_ 部分に異なるプレフィックスが付けられます。
WHERE 句の後に何が続くかは、投稿を取得しようとしている方法によって異なります。
たとえば、「Select Me」というタイトルの投稿が必要であることがわかっている場合は、次のように使用できます。
SELECT ID FROM wp_posts WHERE post_title LIKE '%select me%';
もちろん、LIKE は必須ではありません。これは、大文字と小文字の問題を回避したり、部分的な文字列で選択したりするために使用するショートカットです (これは遅くなる可能性があります)。
データベース名とその他の情報は、WordPress の構成ファイルにあります。テーブル名が不明な場合は、コマンド ライン プロンプトから describe を使用するか、phpMyAdmin などの Web ベースのツールに接続します。
幸運を。
カテゴリには複数の用語が存在する可能性があるため、join
以下の表を使用して、where 句に投稿 ID を指定できます。
SELECT t.* FROM `wp_terms` t
INNER JOIN `wp_term_taxonomy` tt ON (t.`term_id` =tt.`term_id`)
LEFT JOIN `wp_term_relationships` ttr ON (tt.`term_taxonomy_id`= ttr.`term_taxonomy_id`)
LEFT JOIN `wp_posts` p ON (ttr.`object_id` = p.`ID`) WHERE p.`ID`=23
// example post id is 23
wpでは、クラスリファレンスwpdbを使用できます
global $wpdb;
$terms=$wpdb->get_results("SELECT t.* FROM $wpdb->prefix.`terms` t
INNER JOIN $wpdb->prefix.`term_taxonomy` tt ON (t.`term_id` =tt.`term_id`)
LEFT JOIN $wpdb->prefix.`term_relationships` ttr ON (tt.`term_taxonomy_id`= ttr.`term_taxonomy_id`)
LEFT JOIN $wpdb->prefix.`posts` p ON (ttr.`object_id` = p.`ID`) WHERE p.`ID`=23 ");
簡単に、カテゴリの配列を返すWP のget_the_category()を使用できます。