【问题标题】:Saving (multiple) meta values of a select field保存选择字段的(多个)元值
【发布时间】:2015-07-19 03:15:09
【问题描述】:

我无法保存选择字段框中包含的元数据。只是一个示例(在 function.php 中连接到单个产品设置页面):

(...)


    <select style="width:100%" id="_receita" name="_receita[]" multiple="multiple" data-placeholder="<?php _e( 'Search for a product', 'woocommerce' ); ?>">
            <?php
                echo '<option value="TEST"> TEST </option>';
                echo '<option value="TEST1"> TEST1 </option>';
                echo '<option value="TEST2"> TEST2 </option>';
                ?>
            </select>

    // few others custom fields:
   <?php $ingrediente_x_quantidade = get_post_meta( $post->ID, '_ingrediente_x_quantidade', true ); ?>  
            <input placeholder="<?php _e( 'Ingrediente', 'woocommerce' ); ?>" type="text" class="ingrediente" id ="_ingrediente" name="_ingrediente" value="<?php echo $ingrediente_x_quantidade[0]; ?>" style="width: 90%;" />
            <input placeholder="<?php _e( 'qnt.', 'woocommerce' ); ?>" type="number" name="_quantidade" id="_quantidade" class = "quantidade" value="<?php echo $ingrediente_x_quantidade[1]; ?>" step="any" min="0" style="width: 25%;" />

(...)

为了保存数据,我在function.php中包含:

    add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
    // Save Fields
    add_action( 'woocommerce_process_product_meta', 'woo_add_custom_general_fields_save' );


function woo_add_custom_general_fields_save( $post_id ){

// Custom Field
 $ingrediente_x_quantidade =  array( esc_attr( $_POST['_ingrediente'] ), esc_attr( $_POST['_quantidade'] ) );
 update_post_meta( $post_id, '_ingrediente_x_quantidade', $ingrediente_x_quantidade );

 // Select Field
 foreach ($_POST["_receita"] as $receita) {
 update_post_meta($post->ID, "_receita", $receita);
        }

        }

自定义字段(“_ingrediente_x_quantidade”)的一切正常,但对于选择字段“_receita”,我得到一个空数组:

[_ingrediente_x_quantidade] => Array
(
[0] => a:2:{i:0;s:19:”Aveia, flocos, crua”;i:1;s:3:”113″;}
)

[_receita] => Array
(
[0] =>
)

我做错了什么?我对编码很陌生!

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案1】:

    我发现使用 foreach 存储数据时存在一个问题,每条记录具有相同的键和发布 ID...

    尝试在基地使用这个:

    update_post_meta($post->ID, "_receita", serialize($receita));
    
    $receita = unserialize(get_post_meta($post->ID, "_receita", true));
    

    对空数组使用检查也很好......

    【讨论】:

    • 感谢您的回复。我已经尝试过你的代码(暂时没有检查空虚,但我稍后会添加......当它工作时)仍然不正确。现在我得到:[_receita] =&gt; Array ( [0] =&gt; s:4:”b:0;”; ) 不知道为什么,似乎没有找到正确的字段(id="_receita")
    • 如果我在该字段中单击其中一项,它只会保存该项。我需要全部保存,但是怎么做???
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2017-12-28
    • 2019-08-05
    • 2011-02-01
    • 2017-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多