将注释元存储为数组

时间:2012-11-19 作者:Lee Peterson

我需要在评论后表单(确切地说是Woocommerce产品评论表单)中添加多个复选框,以便人们选择产品最适合哪种健康状况。选择X个复选框并留下书面注释后,我需要将这些值作为数组存储在commentmeta表中。然后,我需要将此人评论中的每个选中复选框值打印为无序列表。

我陷入困境的地方是在commentmeta中存储多个复选框。以下是我迄今为止创建复选框的方法:

add_action( \'comment_form_logged_in_after\', \'additional_fields\' );
add_action( \'comment_form_after_fields\', \'additional_fields\' );
function additional_fields () {

    echo \'<p class="comment-form-condition">\' .
    \'<label for="condition">\'. __(\'Conditions\') . \'<span class="required">*</span>: </label> <br />
    <span class="commentconditionbox">\';

    $conditions = array(
        "cancer" => "Cancer",
        "crohns" => "Chrons",
        "fibromyalgia" => "Fibromyalgia"
    );
    foreach( $conditions as $condition )
        echo \'<span class="comment-condition"><input type="checkbox" name="condition" id="condition" value="\'. $condition .\'"/> \'. $condition .\'</span>\';

    echo \'</span></p>\';

}
下面是我存储数据的地方:

add_action( \'comment_post\', \'save_comment_meta_data\' );
function save_comment_meta_data( $comment_id ) {

    if ( ( isset( $_POST[\'condition\'] ) ) && ( $_POST[\'condition\'] != \'\') )
        $filtered_condition = wp_filter_nohtml_kses($_POST[\'condition\']);

    add_comment_meta( $comment_id, \'condition\', $filtered_condition );

}
不过,这只存储其中一个值。如何将每个选中复选框的值存储为数组?

在网站的其他地方,我需要根据这些值对产品进行排序。因此,如果有两个产品选中了“癌症”复选框,我将通过查询哪些产品具有该元值,在页面上输出这两个产品。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

使input 名称数组元素:

<input type="checkbox" name="condition[]"
PHP将在您访问值之前动态地将其转换为实际数组。

结束

相关推荐