php woocommerce定制产品类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php woocommerce定制产品类型相关的知识,希望对你有一定的参考价值。

<?php

/**
 * Woocommerce custom product types
 */
class woptimaWooCustomProducts
{
	
	function __construct($name,$nicename,$virtual=false)
	{
		$this->name 	= $name;
		$this->nicename = $nicename;
		$this->virtual  = $virtual;
		add_filter( 'product_type_selector', [$this,'add_product_type'] );
		add_action( 'admin_footer', [$this,'show_product_tabs'] );
		add_filter( 'woocommerce_product_class', [$this,'custom_product_class'], 10, 2 );

	}

	function add_product_type($type ) {
		$type[ $this->name ] = __( $this->nicename, 'hotelz' );
		return $type;
	}

	function custom_product_class( $classname, $product_type ) {
	    if ( $product_type == $this->name ) { 
	        $classname = 'WC_Product_'.$this->name;
	    }
	    return $classname;
	}

	function show_product_tabs() {
		if ('product' != get_post_type()) :
	        return;
	    endif;
	    ?>
	    <script type='text/javascript'>
	        jQuery(document).ready(function () {
	            //for Price tab
	            jQuery('.product_data_tabs .general_tab').addClass('show_if_<?php echo $this->name ?>').show();
	            jQuery('#general_product_data .pricing').addClass('show_if_<?php echo $this->name ?>').show();
	            //for Inventory tab
	            jQuery('.inventory_options').addClass('show_if_<?php echo $this->name ?>').show();
	            jQuery('#inventory_product_data ._manage_stock_field').addClass('show_if_variable_bulk').show();
	            jQuery('#inventory_product_data ._sold_individually_field').parent().addClass('show_if_<?php echo $this->name ?>').show();
	            jQuery('#inventory_product_data ._sold_individually_field').addClass('show_if_<?php echo $this->name ?>').show();
	            //for Shipping tab
	        <?php if($this->virtual) : ?>
	            jQuery('.product_data_tabs .shipping_tab').addClass('hide_if_<?php echo $this->name ?>').show();
	            jQuery('#shipping_product_data').addClass('hide_if_<?php echo $this->name ?>').show();
	        <?php endif; ?>
	        });
	    </script>
	    <?php
	}


}


// ROOM
add_action( 'init', 'register_room_product_type' );
function register_room_product_type() {
	class WC_Product_room extends WC_Product {

		public $product_type = 'room';
	    
	    public function __construct( $product ) {
			$this->product_type = 'room';
			parent::__construct( $product );
		}

		public function get_type(){
	        return 'room';
	    }
	}
	$hotelzRoomProduct = new woptimaWooCustomProducts('room','Room',true);
}

// SERVICE
add_action( 'init', 'register_service_product_type' );
function register_service_product_type() {
	class WC_Product_service extends WC_Product {

		public $product_type = 'service';
	    
	    public function __construct( $product ) {
			$this->product_type = 'service';
			parent::__construct( $product );
		}

		public function get_type(){
	        return 'room';
	    }
	}
	$hotelzServiceProduct = new woptimaWooCustomProducts('service','Service',true);
}

以上是关于php woocommerce定制产品类型的主要内容,如果未能解决你的问题,请参考以下文章

在Woocommerce中为特定产品类别使用自定义单一产品模板

Woocommerce 定制产品 slug

php [SmartCrawl]通过为MarketPress和WooCommerce产品生成和呈现产品类型OpenGraph数据来补充SmartCrawl OpenGraph

更新变体产品价格 - 在产品页面中不可见 - Woocommerce

php Cheatsheet - 在functions.php中的WooCommerce定制

php Cheatsheet - 在functions.php中的WooCommerce定制