通过SQL查询删除孤立的分类术语

时间:2011-06-20 作者:MartinJJ

我有3种自定义帖子类型,每个CPT都有帖子,这些帖子被cron jobs设置为通过给定的时间尺度自动删除,问题是当它们被删除时,它会在下拉列表中留下孤立的分类术语等,不用说,当单击它们时,会出现“嘎嘎嘎嘎oops 404错误”,我可以找到sql查询来运行孤立标签,但与分类学术语相关的似乎很少(事实上我什么也没发现),anubody对此有什么想法吗?

More Info
我的所有术语都预先分配给分类法,并列在wp\\U terms表中,它们被预先分配的原因是作者在创建新帖子时从选项菜单中选择了它们,因此所有未附加(未使用的术语)仍需要保留在wp\\U terms表中以供以后包含,我需要从中获取信息以运行删除查询的表是wp\\U terms\\U分类法,wp\\u terms\\u relationships和wp\\u posts来查找与空post id匹配的内容,这就是让我感到困惑的部分。

我通过以下方式显示选择条款Scribus Query Multiple Taxonomies 插件。

UPDATE:

从…起theDeadMedics 下面的答案我推断我可以做一些事情:

<?php 
require_once \'wp-load.php\';

global $wpdb; 

$expireds = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = \'sales\' AND HOUR(TIMEDIFF(NOW(),  post_date_gmt)) >=4321
");

foreach ($expireds as $expired) {
wp_delete_post( $post->ID, true );
}
?>  
LAST UPDATE
我看到一些人将此设置为最喜欢的,下面是一个完整的工作查询,它将删除设置为post\\u date\\u gmt后“n”个小时数的过期帖子(以及与该帖子相关的所有元数据)。

在下面的代码中>=2 表示删除1小时前的帖子,您希望为删除设置的小时数应始终加1。

<?php 
require_once \'wp-load.php\';

global $wpdb; 

$expireds = $wpdb->get_results("SELECT ID, post_title FROM $wpdb->posts WHERE post_type = \'sales\' AND HOUR(TIMEDIFF(NOW(),  post_date_gmt)) >=1");

foreach ($expireds as $post) {
wp_delete_post( $post->ID, false );
}
?>
问候

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

您不应该需要使用自定义SQL查询-请坚持使用内置方法wp_delete_post(). 这也将清除所有术语关系。

结束

相关推荐

WP_Query by just the id?

在法典中WP_Query 我知道你可以通过page_id=7 对于页或按p=7 对于帖子。有没有办法通过ID获取任何帖子类型的帖子?喜欢id=7 无论是页面、帖子还是自定义帖子类型,都能得到它?我只能WP_Query 具有p=7 如果我添加&post_type=customposttype. 有没有一种方法可以从ID中获取它,而不考虑帖子类型?