Я пытаюсь создать новый тип продукта, проблема в том, что сейчас он основан на $ product, которые, кажется, не продаются или что-то в этом роде, потому что на странице продукта я не добавляю в корзину, и на Страница продукта администратора: у меня нет общей вкладки с ценами и нет инвентаря.
Я добавил код, который у меня есть, в моей теме / functions.php
Как мне сделать этот тип товара продаваемым: /
спасибо
add_action( 'init', 'register_test_product_type' );
function register_test_product_type() {
class WC_Product_Test_Product extends WC_Product {
public function __construct( $product ) {
$this->product_type = 'test_product';
parent::__construct( $simple_product );
}
}
}
add_filter( 'product_type_selector', 'add_test_product_type' );
function add_test_product_type( $types ){
$types[ 'test' ] = __( 'Test product', 'test_product' );
return $types;
}
add_filter( 'woocommerce_product_data_tabs', 'test_product_tab' );
function test_product_tab( $tabs) {
$tabs['test'] = array(
'label' => __( 'Tests', 'test_product' ),
'target' => 'test_product_options',
'class' => 'show_if_test_product',
);
return $tabs;
}
add_action( 'woocommerce_process_product_meta', 'save_test_product_settings' );
function save_test_product_settings( $post_id ){
$test_product_info = $_POST['test_product_info'];
if( !empty( $test_product_info ) ) {
update_post_meta( $post_id, 'test_product_info', esc_attr( $test_product_info ) );
}
}
add_action( 'woocommerce_single_product_summary', 'test_product_front' );
function test_product_front () {
global $product;
if ( 'test' == $product->get_type() ) {
echo( get_post_meta( $product->get_id(), 'test_product_info' )[0] );
}
}
function remove_linked_products($tabs){
unset($tabs['shipping']);
return($tabs);
}
add_filter('woocommerce_product_data_tabs', 'remove_linked_products', 10, 1);
новый код экономит нормально и все, кроме цены от woocommerce, если выдает мне эту ошибку
Fatal error: Uncaught Error: Call to a member function get_price() on null in C:\xampp\htdocs\fineland\wp-content\themes\crane\functions.php:1488 Stack trace: #0 C:\xampp\htdocs\fineland\wp-includes\class-wp-hook.php(286): demo_product_tab_product_tab_content('') #1 C:\xampp\htdocs\fineland\wp-includes\class-wp-hook.php(310): WP_Hook->apply_filters('', Array) #2 C:\xampp\htdocs\fineland\wp-includes\plugin.php(465): WP_Hook->do_action(Array) #3 C:\xampp\htdocs\fineland\wp-content\plugins\woocommerce\includes\admin\meta-boxes\views\html-product-data-panel.php(53): do_action('woocommerce_pro...') #4 C:\xampp\htdocs\fineland\wp-content\plugins\woocommerce\includes\admin\meta-boxes\class-wc-meta-box-product-data.php(35): include('C:\\xampp\\htdocs...') #5 C:\xampp\htdocs\fineland\wp-admin\includes\template.php(1306): WC_Meta_Box_Product_Data::output(Object(WP_Post), Array) #6 C:\xampp\htdocs\fineland\wp-admin\edit-form-advanced.php(638): do_meta_boxes(Object(WP_Screen), 'normal', Object(WP_Post)) #7 C:\xampp\htdocs\fineland\wp in C:\xampp\htdocs\fineland\wp-content\themes\crane\functions.php on line 1488
новый код
add_action( 'init', 'register_demo_product_type' );
function register_demo_product_type() {
class WC_Product_Demo extends WC_Product {
public function __construct( $product ) {
$this->product_type = 'demo';
parent::__construct( $product );
}
}
}
add_filter( 'product_type_selector', 'add_demo_product_type' );
function add_demo_product_type( $types ){
$types[ 'demo' ] = __( 'Demo product', 'dm_product' );
return $types;
}
add_filter( 'woocommerce_product_data_tabs', 'demo_product_tab' );
function demo_product_tab( $tabs) {
$tabs['demo'] = array(
'label' => __( 'Test', 'dm_product' ),
'target' => 'demo_product_options',
'class' => 'show_if_demo_product',
);
unset($tabs['shipping']);
return $tabs;
}
global $product;
add_action( 'woocommerce_product_data_panels', 'demo_product_tab_product_tab_content' );
function demo_product_tab_product_tab_content() {
?><div id='demo_product_options' class='panel woocommerce_options_panel'><?php
?><div class='options_group'><?php
$products;
woocommerce_wp_text_input(
array(
'id' => '_regular_price',
'value' => $product->get_price( 'edit' ),
'label' => __( 'Regular price', 'woocommerce' ) . ' (' . get_woocommerce_currency_symbol() . ')',
'data_type' => 'price',
)
);
?></div>
</div><?php
}
add_action( 'woocommerce_process_product_meta', 'save_demo_product_settings' );
function save_demo_product_settings( $post_id ){
$_regular_price = $_POST['_regular_price'];
if( !empty( $_regular_price ) ) {
update_post_meta( $post_id, '_regular_price', esc_attr( $_regular_price ) );
}
}
add_action( 'woocommerce_single_product_summary', 'demo_product_front' );
function demo_product_front () {
global $product;
if ( 'demo' == $product->get_type() ) {
echo( get_post_meta( $product->get_id(), '_regular_price' )[0] );
}
}