0

我有多个需要保存的元框。我能够保存它,但我认为这不是最好的方法。我只想要一行代码 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 );
4

2 回答 2

1

没有必要做任何其他事情,因为您当前的代码并不多,但是如果您真的想减少一点并且想让它变得有点动态,那么您可以用一种方法来做,试一试

$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]));
    }
}
于 2013-11-13T01:50:31.413 回答
1

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

$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

于 2013-11-13T01:50:40.540 回答