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

Wordpress 我希望WooCommerce立即将现有的自定义帖子类型视为产品,而无需重新保存每个帖子,wordpress,woocommerce,custom-post-type,advanced-custom-fields,Wordpress,Woocommerce,Custom Post Type,Advanced Custom Fields,我有数以百万计的帖子(使用名为“case”的自定义帖子类型)。他们每个人都有很多post_元记录(使用ACF)。我现在希望woocommerce将这些“案例”CPT视为产品(,而不将其实际帖子类型更改为“产品”)。我正在使用它来建立woocommerce,将任何CPT视为产品。这有点管用。但问题是,我不得不进入每个“案例”帖子编辑屏幕,重新保存帖子,以便woocommerce最终将其识别为产品。显然,对数百万个帖子手动执行此操作是不切实际的。那么,我怎样才能骗woocommerce认识到这些呢?

我有数以百万计的帖子(使用名为“case”的自定义帖子类型)。他们每个人都有很多post_元记录(使用ACF)。我现在希望woocommerce将这些“案例”CPT视为产品(,而不将其实际帖子类型更改为“产品”)。我正在使用它来建立woocommerce,将任何CPT视为产品。这有点管用。但问题是,我不得不进入每个“案例”帖子编辑屏幕,重新保存帖子,以便woocommerce最终将其识别为产品。显然,对数百万个帖子手动执行此操作是不切实际的。那么,我怎样才能骗woocommerce认识到这些呢?我是否可以在数据库或函数代码中添加最少的post meta字段或执行其他操作,以便识别它们


注意:正确答案不应要求将这些项目的post_类型更改为“产品”。

在数据库中运行查询:

  • 制作一份数据库副本
  • 运行查询:
    updatewp_posts SET post_type='product',其中post_type='post'但是
  • 如果您对代码一无所知,可以在更新一篇文章时使用钩子运行该查询,然后删除代码

    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

    我指定要在不将post类型更改为“product”的情况下完成此操作。