我希望WooCommerce立即将现有的自定义帖子类型视为产品而不会重新保存每个帖子

时间:2016-08-06 19:24:15

标签: wordpress woocommerce custom-post-type advanced-custom-fields

我有数百万个帖子(使用名为&#34的自定义帖子类型;案例")。它们每个都有很多post_meta记录(使用ACF)。我现在想要woocommerce来对待这些" case" CPT作为产品(将实际帖子类型更改为"产品")。我使用Reigel Gallarde's plugin设置了woocommerce来将任何CPT视为产品。它有点工作。但问题是我被迫进入每个案件"发布编辑屏幕并重新保存帖子,以便woocommerce最终将其识别为产品。显然,为数百万个帖子手动执行此操作是不切实际的。那么我怎么能欺骗woocommerce认识这些呢?我是否可以在数据库或功能代码中添加最少的后置元字段或执行其他操作以便识别它们?

注意:正确答案不应要求将这些项目的post_type更改为" product"。

1 个答案:

答案 0 :(得分:0)

在您的数据库中运行查询:

  1. 制作数据库的副本。
  2. 运行查询:UPDATE wp_posts SET post_type = 'product' WHERE post_type = 'post';using $wpdb
  3. 如果您不知道任何代码,可以在更新一个帖子时使用钩子运行该查询,然后删除代码。

    function runQuery(){
        global $wpdb;
        $wpdb->update(
            $wpdb->posts,
            array('post_type' => 'product'),
            array('post_type' => 'post'),
            array('%s'),
            array(''%s0)
        );
    
    }
    
    add_action( 'save_post', 'runQuery' );
    

    将此添加到functions.php