这是完全错误的。元框显示在帖子/页面编辑屏幕上,因此如果您提交自己的表单,整个页面都将被提交/刷新。查找此处的metabox=>SO Thread
您应该使用WP自己的函数来处理此问题。看add_meta_box() 和检查this tutorial 了解您应该如何思考此代码。图坦卡蒙的例子。页面显示您所需的内容。
code from WP dev
function wporg_add_custom_box()
{
$screens = [\'post\', \'wporg_cpt\'];
foreach ($screens as $screen) {
add_meta_box(
\'wporg_box_id\', // Unique ID
\'Custom Meta Box Title\', // Box title
\'wporg_custom_box_html\', // Content callback, must be of type callable
$screen // Post type
);
}
}
add_action(\'add_meta_boxes\', \'wporg_add_custom_box\');
function wporg_custom_box_html($post)
{
$value = get_post_meta($post->ID, \'_wporg_meta_key\', true);
?>
<label for="wporg_field">Description for this field</label>
<select name="wporg_field" id="wporg_field" class="postbox">
<option value="">Select something...</option>
<option value="something" <?php selected($value, \'something\'); ?>>Something</option>
<option value="else" <?php selected($value, \'else\'); ?>>Else</option>
</select>
<?php
}
要保存字段,您需要在用户保存帖子/页面时捕获它,因此当
save_post
操作已启动。
function wporg_save_postdata($post_id)
{
if (array_key_exists(\'wporg_field\', $_POST)) {
update_post_meta(
$post_id,
\'_wporg_meta_key\',
$_POST[\'wporg_field\']
);
}
}
add_action(\'save_post\', \'wporg_save_postdata\');