保存后为什么我的自定义元数据字段会清除?

时间:2014-01-02 22:22:26

标签: wordpress

我在我的Wordpress帖子类型中添加了一个自定义元字段。每次保存时,字段都不包含信息(但信息会保存到数据库中)。

我的代码:

function add_post_meta() {
    add_meta_box( 
        'my_meta_box',
        __( 'Metabox', 'framework' ),
        'meta_box_content',
        'post_type',
        'advanced',
        'high'
    );
}
add_action( 'add_meta_boxes', 'add_post_meta' );

function virtual_merchant_box_content( $post ) {
    wp_nonce_field( plugin_basename( __FILE__ ), 'meta_box_content_nonce' );

    echo '<table><tr>';
    echo '<td><label for="input_value">Enter Input Value:</label></td>';
    echo '<td><input type="text" id="input_value" name="input_value" /></td>';
    echo '</tr></table>';

}

function meta_box_save( $post_id ) {

   if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
   return;

   if ( !wp_verify_nonce( $_POST['meta_box_content_nonce'], plugin_basename( __FILE__ ) ) )
   return;

   if ( 'page' == $_POST['post_type'] ) {
       if ( !current_user_can( 'edit_page', $post_id ) )
       return;
   } else {
       if ( !current_user_can( 'edit_post', $post_id ) )
       return;
   }


   $input_value = $_POST['input_value'];
   update_post_meta( $post_id, 'input_value', $input_value );

}

add_action( 'save_post', 'metat_box_save' );

1 个答案:

答案 0 :(得分:1)

使用get_post_meta()获取输入值,然后将其添加到文本输入字段的value=""属性中。

function virtual_merchant_box_content( $post ) {
    wp_nonce_field( plugin_basename( __FILE__ ), 'meta_box_content_nonce' );

    $input_value = get_post_meta( $post->ID, 'input_value', true);

    echo '<table><tr>';
    echo '<td><label for="input_value">Enter Input Value:</label></td>';
    echo '<td><input type="text" id="input_value" name="input_value" value="' . $input_value . '" /></td>';
    echo '</tr></table>';

}