カテゴリ(分類法 "category")が指定されていないID投稿を取得する必要があります。ポストは他の分類法を含みます。
私はコードから投稿を得ます:
$posts = $wpdb->get_results('SELECT ...', , ARRAY_A);
私の質問は希望の録音タイプを選択する
SELECT distinct posts.ID FROM wp_posts AS posts
LEFT JOIN wp_term_relationships AS cat_link ON
cat_link.object_id = posts.ID
LEFT JOIN wp_term_taxonomy AS cat_tax ON
cat_link.term_taxonomy_id = cat_tax.term_taxonomy_id AND cat_tax.taxonomy NOT IN ('category')
WHERE post_type = 'popular_music' AND post_status = 'publish' ORDER BY posts.ID DESC
しかし、それは考慮されていません:
cat_link.term_taxonomy_id = cat_tax.term_taxonomy_id AND cat_tax.taxonomy NOT IN ('category')
未分類のレコードを選択する方法
私が質問を理解したならば、あなたは同等のSQLを探しています。
$args = array (
'post_type' => 'popular_music',
'post_status' => 'publish',
'tax_query' => array (
array (
'taxonomy' => 'category',
'operator' => 'NOT EXISTS',
),
),
'posts_per_page' => -1,
'orderby' => 'ID',
'order' => 'DESC',
) ;
$query = new WP_Query ($args) ;
echo $query->request ;
もしそうなら、これはWP_Queryが生成するSQLです。
SELECT SQL_CALC_FOUND_ROWS $wpdb->posts.ID
FROM
$wpdb->posts
WHERE
1=1 AND
(
NOT EXISTS
(
SELECT 1
FROM
$wpdb->term_relationships INNER JOIN
$wpdb->term_taxonomy ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
WHERE
$wpdb->term_taxonomy.taxonomy = 'category' AND
$wpdb->term_relationships.object_id = $wpdb->posts.ID
)
) AND
$wpdb->posts.post_type = 'popular_music' AND
(($wpdb->posts.post_status = 'publish'))
GROUP BY $wpdb->posts.ID
ORDER BY $wpdb->posts.ID DESC
あなたがしているSQLはこれに似たものです:
SELECT *
FROM wp_posts AS posts
LEFT JOIN wp_term_relationships
AS cat_link
ON cat_link.object_id = posts.ID
LEFT JOIN wp_term_taxonomy
AS cat_tax
ON cat_tax.term_taxonomy_id = cat_link.term_taxonomy_id
AND cat_tax.taxonomy = 'category'
WHERE post_type = 'post'
AND post_status = 'publish'
AND cat_link.object_id IS NULL