Wordpress 使用 wpdb 查询删除不在特定类别中的帖子 [英] Wordpress delete posts not in specific categories using wpdb query

查看:29
本文介绍了Wordpress 使用 wpdb 查询删除不在特定类别中的帖子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何修改以下查询以删除所有不属于特定 Wordpress 类别的自定义帖子类型列表"的帖子?

How do I modify the following query to delete all posts with the custom post type "listings" that are NOT IN specific Wordpress categories?

注意,在我的特定情况下,我必须使用 $wpdb->query().我的排除类别是术语 ID 的 21、22 和 24.

Note, I must use $wpdb->query() in my particular situation. My categories for exclusion are term ID's 21, 22, and 24.

$wpdb->query('DELETE FROM wp_posts WHERE post_type = "listings"');

更新 - 这个查询让我更接近我所追求的但抛出一个 SQL 错误.

UPDATE - THIS query brings me a lot closer to what I am after but throws a SQL error.

DELETE FROM wp_posts a 
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id ) 
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id ) 
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id ) 
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id ) 
WHERE a.post_type = "listings" 
AND e.term_id NOT IN (21,22,24);

错误:

WordPress database error You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id' at line 1 for query DELETE FROM wp_posts LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id LEFT JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id LEFT JOIN wp_terms ON wp_terms.term_id = wp_term_taxonomy.term_id WHERE wp_posts.post_type = "listings" AND wp_terms.term_id NOT IN (21,22,24)

推荐答案

$wpdb->query('DELETE wp_posts FROM wp_posts 
INNER JOIN wp_term_relationships ON wp_posts.id = wp_term_relationships.object_id
INNER JOIN wp_term_taxonomy ON wp_term_relationships.object_id = wp_term_taxonomy.term_taxonomy_id
WHERE wp_posts.post_type = "listings" AND wp_term_taxonomy.taxonomy NOT IN (taxonomy_1_slug, taxonomy_2_slug, etc.)');

这篇关于Wordpress 使用 wpdb 查询删除不在特定类别中的帖子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆