首页 > 解决方案 > 如何在 WooCommerce 中为单个产品分配多个元值?

问题描述

我正在寻找一种将多个设置meta_value为单个产品的解决方案。我使用以下几行进行设置meta_key

首先,我在 WooCommerce 中创建了一个文本输入选项:

echo '<div class="options_group">';
$product_1 = array(
'id'            => 'custom_text_field_title_review_1',
'label'         => __( 'A point:', 'rasa_store' ),
'desc_tip'      => true,
'description'   => __( 'type a review point.', 'rasa_store' )
);
echo '</div>';

echo '<div class="options_group">';
$product_2 = array(
'id'            => 'custom_text_field_title_review_2',
'label'         => __( 'B point:', 'rasa_store' ),
'desc_tip'      => true,
'description'   => __( 'type a review point.', 'rasa_store' )
);
echo '</div>';
woocommerce_wp_text_input( $product_1 );
woocommerce_wp_text_input( $product_2 );

比我将数字保存在数据库中,

$field_key_review_1 = 'custom_text_field_title_review_1';
if ( isset( $_POST[$field_key_review_1] ) && ! empty( $_POST[$field_key_review_1] ) ) {
    $attribute_review_1 = wc_get_product( $post_id );
    $attribute_review_1->update_meta_data( $field_key_review_1, sanitize_text_field( $_POST[$field_key_review_1] ) );
    $attribute_review_1->save();
} else {
    $attribute_review_1 = wc_get_product( $post_id );
    $attribute_review_1 = delete_post_meta( $post_id, 'custom_text_field_title_review_1' );
    }

然后我检查此自定义字段中是否有数字,将它们另存为product_review,然后我想将其product_review用作过滤器:

    if ( $product_1 ){
        $product->update_meta_data('product_review', 'review_1'); 
    $product->save(); // Save to database
    } if ( $product_2 ){
        $product->update_meta_data('product_review', 'review_2'); 
$product->save();
    } if ( $product_3 ){
        $product->update_meta_data('product_review', 'review_3'); 
$product->save();
    } if ( $product_4 ){
        $product->update_meta_data('product_review', 'review_4'); 
$product->save();
    } if ( $product_5 ){
        $product->update_meta_data('product_review', 'review_5'); 
$product->save();
    } if ( $product_6 ){
        $product->update_meta_data('product_review', 'review_6'); 
$product->save();
    } if ( $product_7 ){
        $product->update_meta_data('product_review', 'review_7'); 
$product->save();
    } if ( $product_8 ){
        $product->update_meta_data('product_review', 'review_8'); 
$product->save();
    }

然后我想使用这个 meta_key 来过滤产品,我只是在寻找一种解决方案,meta_valuemeta_key. 例如,一种产品可能同时具有review_1 review_2review_3

标签: wordpresswoocommerce

解决方案


推荐阅读