Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce';产品类型选择器&x27;显示自定义类型但另存为简单产品的筛选器_Php_Wordpress_Woocommerce - Fatal编程技术网

Php WooCommerce';产品类型选择器&x27;显示自定义类型但另存为简单产品的筛选器

Php WooCommerce';产品类型选择器&x27;显示自定义类型但另存为简单产品的筛选器,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我试图通过使用product\u type\u选择器过滤器通过插件添加自定义产品类型,虽然我的产品显示在select上,但每当我保存选择我的产品类型的产品时,如果我在single product.php模板上执行var\u dump($product->product\u type)操作,它就会显示“简单”产品 我不知道我做错了什么。任何帮助都将不胜感激。这是我的密码 <?php /** * Plugin Name: MY CuSTOM PRODUCT TYPE * @since

我试图通过使用
product\u type\u选择器
过滤器通过插件添加自定义产品类型,虽然我的产品显示在select上,但每当我保存选择我的产品类型的产品时,如果我在
single product.php
模板上执行
var\u dump($product->product\u type)
操作,它就会显示“简单”产品

我不知道我做错了什么。任何帮助都将不胜感激。这是我的密码

<?php
/**
 * Plugin Name: MY CuSTOM PRODUCT TYPE
 * @since       1.0
 */

/**
* Required functions
*/
function product_code_loader() {
  class WC_Product_Custom_Product_Type extends WC_Product {
    public function __construct( $product ) {
      $this->product_type = 'my_custom_product_type';
      parent::__construct( $product );
      add_filter( 'product_type_selector', array( $this, 'add_my_custom_product_type_to_select' ) );
    }

    function add_my_custom_product_type_to_select( $product_types ) {
      $product_types['my_custom_product_type'] = __( 'My Custom Product Type', 'my_custom_product_type' );
      return $product_types;
    }
  }
  new WC_Product_Custom_Product_Type(null);
}
add_action('plugins_loaded', 'product_code_loader');

添加新产品类型时,需要扩展WC\U类产品

class WC_Product_New_Product_type extends WC_Product{

}
你可以通过阅读来了解它是如何工作的。此示例将向您展示如何在选择新产品类型时将新产品类型添加到“选择、隐藏”面板

下面是我如何通过扩展WC_产品类实现的

class WC_Product_Online_Service_Product extends WC_Product {
    public function __construct( $product ) {

        $this->product_type = 'online_service_product';

        parent::__construct( $product );

        // actions & filters follow
    }
 new WC_Product_Online_Service_Product(null); // parameter null but not empty.

正如您所看到的,_construct()有一个参数,我不使用静态函数(真的不知道是否可以)。尝试将其添加到init()

有趣的是,对我来说,问题似乎是使用破折号或下划线。
我现在也遇到了同样的问题,结果发现:“custom\u product”不起作用,但“custom”可以保存。

您是否尝试过调整classname+product\u类型字符串?我已经解决了我的问题,使之兼容


例如:
WC\u-Product\u-Custom\u-Product\u-Type
应收到
Custom\u-Product\u-Type
而不是
my\u-Custom\u-Product\u-Type
,或者在您的示例中,将其修改为
WC\u-Product\u-my\u-Custom\u-Product\u-Type
,任何代码都将不胜感激@Benoti我已经用示例代码更新了我的问题。我试着用插件加载的动作连接我的类,并用WC\u产品扩展类,但没有任何效果。为什么不使用:新的自定义产品类型::init()而不是代码事件管理器?@Benoti是的,我的意思是。但它没有效果。就像我说的,我已经试过了,但也没有用。我很抱歉,我已经试过了你说的所有内容,但我不知道我做错了什么。WooCommerce不同意这是一种定制产品类型,它只是将其显示为一种简单的产品类型。我已经用我的简单插件的完整源代码更新了我的问题。你的问题是你想运行一个函数中的类!您的类无法访问。