代码之家  ›  专栏  ›  技术社区  ›  Duc Phuli

在Woocommerce单一产品页面的简短描述下显示自定义字段

  •  2
  • Duc Phuli  · 技术社区  · 7 年前

    在woocommerce中,我使用一些代码在产品编辑页面中添加一个带有自定义字段的Metabox。

    如何在单个产品页面的简短描述下显示此自定义字段的值?

    这是我的代码:

    add_action ('add_meta_boxes','add_info_meta_box');
    function add_info_meta_box()
    {
        add_meta_box('new_meta', 'info','info_meta_fields_output','product', 'side');
    }
    
    
    function info_meta_fields_output($post)
    {
        $new_meta = get_post_meta($post->ID,'_new_meta',true);
        echo ('<label for="new_meta"> Custom Text </label>');
        echo ('<input type="text" id="new_meta" name="new_meta" value="'.esc_attr($new_meta).'"/>');
    }
    
    add_action('save_post','save_info_meta_box');
    function save_info_meta_box($post_id)
    {
        $new_meta=sanitize_text_field($_POST['new_meta']);
        update_post_meta ($post_id,'_new_meta',$new_meta);
    }
    
    
    // Displaying the value on single product pages
    function meta_product($product_id) {
    
        $new_meta2 = get_post_meta(get_the_ID(),'_new_meta', true);
        echo ('<p id="value-on-single-product">' . $new_meta2 . '</p>');
    }
    add_action('woocommerce_single_product_summary', 'meta_product',30);
    

    但它不显示自定义字段值。

    1 回复  |  直到 7 年前
        1
  •  3
  •   LoicTheAztec    7 年前

    已更新 (如评论中所述,添加了第二个自定义字段)

    您应该尝试以下操作,这将在“产品常规”选项卡“元框”中设置自定义字段,并在“产品简短说明”下显示此自定义字段值:

    // Add the custom field
    add_action( 'woocommerce_product_options_general_product_data', 'add_custom_field_to_general_product_metabox' );
    function add_custom_field_to_general_product_metabox() {
        global $post;
    
        // Get the selected value
        $value = get_post_meta( $post->ID, '_new_meta', true );
        if( empty( $value ) ) $value = ''; // Default value
    
        woocommerce_wp_text_input( array(
            'id'       => 'new_meta',
            'label'    => __( 'Thông tin thêm', 'woocommerce' ),
            'placeholder'       => __( '', 'woocommerce' ),
            'description'       => __( '', 'woocommerce' ),
            'value'   => $value, // Displaying the selected value
        ) );
    
    
        // Get the selected value
        $value2 = get_post_meta( $post->ID, '_new_meta2', true );
        if( empty( $value2 ) ) $value2 = ''; // Default value
    
        woocommerce_wp_text_input( array(
            'id'       => 'new_meta2',
            'label'    => __( 'Thông tin thêm', 'woocommerce' ),
            'placeholder'       => __( '', 'woocommerce' ),
            'description'       => __( '', 'woocommerce' ),
            'value'   => $value2, // Displaying the selected value
        ) );
    }
    
    // Save the custom field
    add_action( 'woocommerce_process_product_meta', 'save_custom_field_to_general_product_metabox' );
    function save_custom_field_to_general_product_metabox( $post_id ){
    
        if( isset( $_POST['new_meta'] ) )
            update_post_meta( $post_id, '_new_meta', esc_attr( $_POST['new_meta'] ) );
    
        if( isset( $_POST['new_meta2'] ) )
            update_post_meta( $post_id, '_new_meta2', esc_attr( $_POST['new_meta2'] ) );
    }
    
    
    // Displaying the custom field value (on single product pages under short description)
    add_action('woocommerce_single_product_summary', 'display_custom_meta_field_value', 25 );
    function display_custom_meta_field_value() {
        global $product;
    
        $custom_field = get_post_meta( $product->get_id(),'_new_meta', true );
        if( ! empty( $custom_field ) )
            echo  '<p id="value-on-single-product">' . $custom_field . '</p>';
    
        $custom_field2 = get_post_meta( $product->get_id(),'_new_meta2', true );
        if( ! empty( $custom_field2 ) )
            echo '<p id="value-on-single-product">' . $custom_field2 . '</p>';
    }
    

    代码进入功能。活动子主题(或活动主题)的php文件。

    已测试并正常工作。