如何在Wordpress中保存自定义元框

时间:2014-02-24 03:16:44

标签: php wordpress wordpress-theming

我一直在尝试将自定义元框数据保存在Wordpress中,但我没有运气。我已经尝试过研究其他帖子,但由于每个人都有不同的方式,我在使用教程和其他帖子时没有取得任何成功。

我创建了一个元数据集:

add_action( 'add_meta_boxes', 'ic_add_heading_box' );

function ic_add_heading_box( $post ) {

    add_meta_box(
            'Meta Box',
            'Heading Titles',
            'ic_heading_box_content', 
            'page', 
            'normal',
            'high'
        );

}

function ic_heading_box_content( $post ) {

    echo '<label>Main Heading (h1)</label>';
    echo '<input type="text" name="heading_box_h1" value="" />';
    echo '<label>Sub Heading (h3)</label>';
    echo '<input type="text" name="heading_box_h3" value="" />';

}

我只是不能为我的生活获取我插入到Wordpress中保存的字段的数据。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您正在使用的功能仅是显示功能。 你实际上并没有对数据做任何事情。它仅用于创建元数据箱。不处理它。

您需要添加

add_action( 'save_post', 'myplugin_save_postdata' );

然后将update_post_meta()codex example中的函数一起使用:

function myplugin_save_postdata( $post_id ) {

  // If this is an autosave, our form has not been submitted, so we don't want to do anything.
  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
      return $post_id;

  // Check the user's permissions. If want
  if ( 'page' == $_POST['post_type'] ) {

    if ( ! current_user_can( 'edit_page', $post_id ) )
        return $post_id;

  } else {

    if ( ! current_user_can( 'edit_post', $post_id ) )
        return $post_id;
  }

  /* OK, its safe for us to save the data now. */

  // Sanitize user input. if you want
  $mydata = sanitize_text_field( $_POST['myplugin_new_field'] );

  // Update the meta field in the database.
  update_post_meta( $post_id, '_my_meta_value_key', $mydata ); // choose field name
}