将元字段添加到 WooCommerce 单个产品页面上的属性列表

Adding meta fields to attribute list on WooCommerce single product page

基于 答案代码。

我在单个产品页面上显示特定的产品属性:

add_action('woocommerce_single_product_summary', 'display_custom_attributes', 36 );
function display_custom_attributes() {
global $product;
$attributes_names = array('Brand', 'Color', 'Size');
$attributes_data  = array();
foreach ( $attributes_names as $attribute_name ) {
    if ( $value = $product->get_attribute($attribute_name) ) {
        $attributes_data[] = $attribute_name . ': ' . $value;
    }       
}
if ( ! empty($attributes_data) ) {
    echo '<h4>Details</h4><ul><li>' . implode( '</li><li>', $attributes_data ) . '</ul>';
}

现在我还需要向该列表添加两个自定义元字段('Serial_Number' 和 'MPN')。

如何添加这些?

添加两个自定义元字段:

  • Serial_Number
  • MPN

对于此列表,您可以使用:

function action_woocommerce_single_product_summary() {
    global $product;
    
    $attributes_names = array( 'Brand', 'Color', 'Size' );

    $attributes_data  = array();
    
    foreach ( $attributes_names as $attribute_name ) {
        if ( $value = $product->get_attribute($attribute_name) ) {
            $attributes_data[] = $attribute_name . ': ' . $value;
        }       
    }
    
    // NOT empty
    if ( ! empty($attributes_data) ) {
        echo '<h4>' . __( 'Details', 'woocommerce' ) . '</h4><ul><li>' . implode( '</li><li>', $attributes_data );
    }
    
    // Get meta
    $sn = $product->get_meta( 'Serial_Number' );    
    $mpn = $product->get_meta( 'MPN' );
    
    // NOT empty
    if ( ! empty ( $sn ) ) {
        echo '<li>' . __( 'My label 1: ', 'woocommerce' ) . $sn . '</li>';
    }

    // NOT empty
    if ( ! empty ( $mpn ) ) {
        echo '<li>' . __( 'My label 2: ', 'woocommerce' ) . $mpn . '</li>';
    }
    
    echo '</ul>';
}
add_action( 'woocommerce_single_product_summary', 'action_woocommerce_single_product_summary', 36, 0 );

在 function.php 主题文件中添加此代码

function call_product_meta_data()
{
    global $post;
    if ($post) {
        $post_meta_value = get_post_meta($post->ID, 'post_meta_key', true);
        if ($post_meta_value != null) {
            echo  "<div class='pr-meta'><p><strong>Meta Title</strong>: $post_meta_value</p></div>";
        } else {
            echo  "<div class='pr-meta'><p><strong>Meta Title</strong>: N/A</p></div>";
        }
    }
}
add_action('woocommerce_single_variation', 'call_product_meta_data');