如何检测修改是由WooCommerce还是WordPress进行的?

时间:2016-12-29 作者:YKKY

由于WordPress自4.6.1版起忽略define(\'WP_POST_REVISIONS\', false); 定义(至少在我的WP实例中),它会尝试进行尽可能多的修改。

即使一个帖子或WooCommerce产品只为CTRL+A -> CTRL+C 然后在没有编辑的情况下关闭,在大多数情况下,我会在数据库中为该特定帖子获得一个很好但完全不需要的修订条目。

由于我认为直接强制删除mySQL数据库中的任何内容都不是一个好主意,因此我最好使用以下不太困难的SQL查询将修订转换为后期草稿或产品草稿:

UPDATE `wp_posts` SET `post_date` = \'2222-12-31 00:00:00\' WHERE `wp_posts`.`post_type` = \'revision\';
UPDATE `wp_posts` SET `post_status` = \'draft\' WHERE `wp_posts`.`post_type` = \'revision\';
UPDATE `wp_posts` SET `post_type` = \'post\' WHERE `wp_posts`.`post_type` = \'revision\';
但不幸的是,后期修订或产品修订在wp_posts 比较其post_statuspost_type 条目,因此在应用上述查询后,产品修订将变为后期草稿。

所以我的问题是,我如何检测WooCommerce的产品修订并将其转换为产品草稿,然后再对修订后的产品进行同样的操作?

1 个回复
SO网友:yivi

Woocommerce使用post\\u类型product 对于产品,所以应该很容易搜索这些内容,而不是帖子。

只需注意正确的post_type.

可以使用如下自连接选择来过滤修订:

SELECT *
FROM `wp_posts` p1
LEFT JOIN `wp_posts` p2 ON (p2.post_parent = p1.ID and p1.post_type = \'products\')
WHERE p1.`post_type` = "revision"
LIMIT 50
尽管如此,我不会将我的修改转换为帖子或类似的内容。你最终会发现周围有成吨的垃圾站。