我一直在尝试将自定义元框数据保存在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中保存的字段的数据。任何帮助将不胜感激。
答案 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
}