如何在wordpress中使用sanitize_text_field和update_post_meta数组参数


How to have an array parameters using sanitize_text_field and update_post_meta in wordpress?

我需要保存多个元框。我能够保存它,但我认为这不是最好的方法。我想要一个update_post_meta行代码和一个sanitize_text_field行代码来保存多个元值的东西。但是现在,目前我有 3 行代码用于sanitize_text_field,3 行代码用于update_post_meta,以保存多个元框值。如何优化我的代码,使我的 3 行代码可以只是一行,或者我如何利用数组参数来执行此函数?这是我的代码。感谢您的帮助

// Sanitize user input.
 $mydata = sanitize_text_field( $_POST['myplugin_new_field']);
 $myskills_data = sanitize_text_field( $_POST['skills_id']);
 $myknowledge_data = sanitize_text_field( $_POST['knowledge_id']);
// Update the meta field in the database.
 update_post_meta( $post_id, '_my_meta_value_key', $mydata );
 update_post_meta( $post_id, '_my_meta_value_skills', $myskills_data );
 update_post_meta( $post_id, '_my_meta_value_knowledge', $myknowledge_data );

您应该以更统一的方式构建文本字段名称和元键,例如:

$array = array( 'new_field', 'skills', 'knowledge' );
foreach( $array as $key )
{
    if( isset( $_POST[$key] ) )
    {
        $value = sanitize_text_field( $_POST[$key] );
        update_post_meta( $post_id, '_my_meta_value_' . $key, $value );
    }
}

这将使用元键_my_meta_value_new_field_my_meta_value_skills_my_meta_value_knowledge 存储经过净化的数据。

没有必要做任何其他事情,因为你当前的代码并不多,但如果你真的想减少一点并希望让它有点动态,那么一种方法你可以做到,试一试

$keys = array(
    '_my_meta_value_key' => 'myplugin_new_field', 
    '_my_meta_value_skills' => 'skills_id',
    '_my_meta_value_knowledge' => 'knowledge_id'
);
foreach($keys as $key => $value){
    if( isset($_POST[$value]) ) {
        update_post_meta($post_id, $key , sanitize_text_field($_POST[$value]));
    }
}