如何在WooCommerce产品管理员中向产品添加序列号字段?

时间:2020-07-13 15:56:20

标签: wordpress woocommerce

在WooCommerce的建议字段中放置每个产品的序列号

您认为我需要一个插件吗?

预先感谢

拉斐尔

2 个答案:

答案 0 :(得分:0)

我的建议是使用ACF | Advanced Custom Fields,它是免费的,具有许多功能并不断更新,并且您也有很多有关该插件的文档。

您可以创建一个名为“条形码”的字段,并将其显示在每种产品上。 例如。如果您为字段条形码命名,那就叫它。

<?php echo get_field("barcode");?>

如果您不想更改模板文件,请使用以下命令:

add_action( 'woocommerce_after_shop_loop_item_title', 'custom_field_display_below_title', 2 );
    function custom_field_display_below_title(){
    global $product;
    
    $custom_field = get_post_meta( $product->get_id(), '_barcode', true );

    if( ! empty($custom_field) ){
        echo '<p class="my-custom-field">'.$custom_field.'</p>';
    }
}

当然,这是一个解决方案,如果您确实想创建一个自定义字段并对其进行处理。但是,您也可以创建一个名为“条形码”的新属性,然后输入值并将其放置在此处,它将显示在每个产品上,而无需编写代码或进行任何操作。

答案 1 :(得分:0)

无需插件,您可以将功能添加到子主题functions.php

// Serial Number Admin: Display custom Field
add_action( 'woocommerce_product_options_general_product_data', 'product_options_general_product_data_add_field' );
function product_options_general_product_data_add_field() {
    global $post;
    echo '<div class="options_group">';

    woocommerce_wp_text_input( array(
        'id'      => '_serial_number',
        'label'   => __( 'Serial Number', 'woocommerce' ),
    ) );

    echo '</div>';
}

// Serial Number Admin : Save custom Field
add_action( 'woocommerce_process_product_meta', 'product_options_general_product_data_save_field' );
function product_options_general_product_data_save_field( $post_id ){
    if( isset( $_POST['_serial_number'] ) )
        update_post_meta( $post_id, '_serial_number', esc_attr( $_POST['_serial_number'] ) );
}

// Order items: Save product "Serial Number" as hidden order item meta data
add_action('woocommerce_checkout_create_order_line_item', 'save_file_type_as_order_item_meta', 20, 4);
function save_file_type_as_order_item_meta($item, $cart_item_key, $values, $order) {
    if ( $serial_number = $values['data']->get_meta('_serial_number') ) {
        $item->update_meta_data( '_serial_number', $serial_number ); // Save as order item (visble on admin only)
    }
}

这将在您的产品中添加一个文本字段,并将其另存为元

Serial

请根据您的需要调整代码