Wordpress 自定义产品类型不允许在Woocommerce中更新

Wordpress 自定义产品类型不允许在Woocommerce中更新,wordpress,woocommerce,Wordpress,Woocommerce,我正在尝试创建自定义产品类型,但在更新以前创建的产品时,它不会更新。例如:如果要更新的产品是简单类型,当我将其更改为自定义产品类型并保存时,它仍然作为简单类型而不是自定义产品类型进行维护 您可以在此处看到问题的gif: 目前我有Woocommerce的3.4.5版和WordPress的5.0-alpha-43406版 接下来,我留下用于生成个性化产品类型的代码: WC_Product_canopytour.php class-commerce-custom-product.php 使用此代码,自

我正在尝试创建自定义产品类型,但在更新以前创建的产品时,它不会更新。例如:如果要更新的产品是简单类型,当我将其更改为自定义产品类型并保存时,它仍然作为简单类型而不是自定义产品类型进行维护

您可以在此处看到问题的gif:

目前我有Woocommerce的3.4.5版和WordPress的5.0-alpha-43406版

接下来,我留下用于生成个性化产品类型的代码:

WC_Product_canopytour.php

class-commerce-custom-product.php

使用此代码,自定义产品的类型将添加到产品信息选择中。选择创建的产品类型时,我还可以看到“自定义”选项卡。但是,当保存选定类型的产品时,它将返回初始值

我在github中有我的插件的源代码,如果你能给它一个 视图,可能我的代码中有错误:

启动项目的步骤:

克隆存储库 在插件文件夹中运行npm安装 运行纱线构建或纱线开发来编译资产
我发现了为什么它对我不起作用。我添加了以下代码以使ACF位于产品数据元框中:

$("#canopytour_options .options_group").append($("#acf-group_5b8804f5a1b49"));
显然,这不能正常工作,因为它不能保存所选的产品类型,请始终保持“简单”


谢谢您的时间。

您好,欢迎收看Stackoverflow。不要期望人们挖掘一个他们不知道的完整的git存储库来帮助你修复一个对问题描述如此糟糕的bug,事情不是这样的。请阅读如何提问,以及如何创建和编辑您的问题,以包括例如代码中不起作用的相关部分。@baptistemm好的,我感觉到了这一点。现在,通过添加我必须添加自定义产品类型的代码来编辑问题:您应该提供一个压缩的预编译插件链接,以便随时使用,而不是需要在本地下载、编译和上传到测试网站中的内容。您的实际问题代码不可测试,因此不完整且不可验证。请记住,寻求调试帮助的问题为什么这段代码不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。
    public function register_canopytour_product_type() {
        include_once(plugin_dir_path( dirname( __FILE__ ) ) . 'woocommerce/WC_Product_canopytour.php');
    }

    public function add_canopytour_product( $types ) {
        $types[ 'canopytour' ] = __( 'Canopy Tour', $this->wcb );
        return $types;
    }

    public function get_tour_product_class($classname, $product_type) {
        if ( $product_type === "canopytour" ) {
            $classname = 'WC_Product_CanopyTour';
        }
        return $classname;
    }

    public function wcb_admin_footer() {
        if ( 'product' != get_post_type() ) :
            return;
        endif;

        ?><script type='text/javascript'>
            jQuery( document ).ready( function() {
                jQuery( '.options_group.pricing' ).addClass( 'show_if_canopytour show_if_variable_canopytour show_if_simple show_if_external' ).show();
                jQuery( 'li.general_options.general_tab' ).addClass( 'show_if_canopytour show_if_variable_canopytour show_if_simple show_if_external' ).show();
            });
        </script><?php
    }

    public function add_canopytour_tab($tabs) {
        $tabs['canopytour'] = array(
            'label'     => __( 'Canopy Tour', 'woocommerce' ),
            'target'    => 'canopytour_options',
            'class'     => array( 'show_if_canopytour', 'show_if_variable_canopytour'  ),
        );
        return $tabs;
    }

    public function canopytour_options_product_tab_content() {
        global $post; ?>
        <div id='canopytour_options' class='panel woocommerce_options_panel'>
            <div class='options_group'>
            </div>
        </div><?php
    }

    function hide_wcb_data_panel( $tabs) {
        // Other default values for 'attribute' are; general, inventory, shipping, linked_product, variations, advanced
        $tabs['shipping']['class'][] = 'hide_if_canopytour hide_if_variable_canopytour';
        return $tabs;
    }
require_once plugin_dir_path( dirname( __FILE__ ) ) . 'includes/woocommerce/class-woocommerce-custom-product.php';

private function define_admin_hooks() {

        $plugin_admin = new WCB_Admin( $this->get_wcb(), $this->get_version() );

        $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' );
        $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );

        if ($this->is_woocommerce_active()) {
            $woo_ct = new WCB_Woocommerce_CanopyTour_Product_Type( $this->get_wcb(), $this->get_version() );
            $this->loader->add_action( 'init', $woo_ct, 'register_canopytour_product_type' );
            $this->loader->add_filter( 'product_type_selector', $woo_ct, 'add_canopytour_product' );
            $this->loader->add_filter( 'woocommerce_product_class', $woo_ct, 'get_tour_product_class', 10, 2 ); 
            $this->loader->add_action( 'admin_head', $woo_ct, 'wcb_admin_head' );
            $this->loader->add_action( 'admin_footer', $woo_ct, 'wcb_admin_footer' );
            $this->loader->add_filter( 'woocommerce_product_data_tabs', $woo_ct, 'add_canopytour_tab' );
            $this->loader->add_action( 'woocommerce_product_data_panels', $woo_ct, 'canopytour_options_product_tab_content' );
            $this->loader->add_action( 'woocommerce_process_product_meta_simple_rental', $woo_ct, 'save_canopytour_option_field'  );
            $this->loader->add_action( 'woocommerce_process_product_meta_variable_rental', $woo_ct, 'save_canopytour_option_field'  );
            $this->loader->add_filter( 'woocommerce_product_data_tabs', $woo_ct, 'hide_wcb_data_panel' );

            $this->loader->add_action( 'woocommerce_product_options_pricing', $woo_ct, 'wcb_children_product_field' );
            $this->loader->add_action( 'save_post', $woo_ct, 'wcb_children_price_save_product' );
        }
    }
$("#canopytour_options .options_group").append($("#acf-group_5b8804f5a1b49"));