如何在元框中保存多个字段?

时间:2015-09-17 作者:user80530

目前我正在做

    public function prfx_meta_save ($post_id){

    if (isset( $_POST[ \'firstname\'])){
        update_post_meta($post_id, \'firstname\', $_POST[ \'firstname\']);
    }
    if (isset( $_POST[ \'lastname\'])){
        update_post_meta($post_id, \'lastname\', $_POST[ \'lastname\']);
    }
    if (isset( $_POST[ \'sex\'])){
        update_post_meta($post_id, \'sex\', $_POST[ \'sex\']);
    }
}
但是我想以某种方式循环所有的post值(不仅仅是这里的值)并保存它们。因此,如果我向元框中添加更多字段,它应该可以保存这些字段,而无需添加另一个update\\u post\\u Meta

谢谢你的帮助

1 个回复
SO网友:TheDeadMedic

我建议您在类上定义field names属性:

class your_class {
    private $_fields = array(
        \'firstname\',
        \'lastname\',
        \'sex\',
    );

    public function prfx_meta_save ( $post_id ) {

    }
}
现在,您可以完全抽象存储处理程序:

foreach ( $this->_fields as $field ) {
    if ( ! isset( $_POST[ $field ] ) )
        continue;

    $value = ( string ) $_POST[ $field ];
    $value = wp_unslash( $value ); // WP adds slashes to all request data
    $value = sanitize_text_field( $value ); // Fix invalid UTF-8, strip tags & line breaks

    update_post_meta( $post_id, $field, $value );
}

相关推荐

仅为主页显示Metabox

我将尝试使用设置字段将metabox添加到主页,但出现问题,请帮助我。删除时,metabox不会显示在页面编辑器中if statement 它显示在所有页面上。add_action(\'add_meta_boxes\', \'metabox_homepage_videos\'); function metabox_homepage_videos($post) { if (is_front_page()): add_meta_box(\'metabox