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定制