我在自定义帖子中向metabox添加了一些文本输入字段。现在,每当我在管理面板的文本字段中放入一些数据并单击“保存”时,所有数据都会消失。代码如下:
<?php
function swpd_render_info_fields()
{
?>
<label for="swpd_comany_addr">Company Address</label>
<input type="text" name="swpd_company_addr" id="swpd_company_addr" />
<?php
}
/* * Process the custom metabox fields */
add_action( \'save_post\', \'swpd_save_info_fields\',99 );
function swpd_save_info_fields($post_id) {
global $post;
if(isset($_POST[\'post_type\']) && ($_POST[\'post_type\'] == "swpd_directory")){
update_post_meta( $post->ID, \'swpd_company_addr\', $_POST[\'swpd_company_addr\'] );
}
}
?>
我已经检查了传递给update\\u post\\u meta()的数据,似乎没有问题,$post->ID包含post ID,而$u post[\'swpd\\u company\\u addr\']包含我要保存到meta的字符串。我真的做了彻底的搜索,没有任何解决方案可以解决我的问题。可能有什么问题?
最合适的回答,由SO网友:s_ha_dum 整理而成
您没有检索保存的数据并填充表单。
function swpd_render_info_fields()
{
?>
<label for="swpd_comany_addr">Company Address</label>
<input type="text" name="swpd_company_addr" id="swpd_company_addr" />
<?php
}
该函数中没有任何内容可以插入保存的数据。你每次只需写一张空白表格。您需要有条件地填充
input
价值
function swpd_render_info_fields($post)
{
$meta = get_post_meta($post->ID);
$value = (!empty($meta[\'swpd_company_addr\']))
? $meta[\'swpd_company_addr\']
: \'\';
?>
<label for="swpd_comany_addr">Company Address</label>
<input type="text" name="swpd_company_addr" id="swpd_company_addr" value="<?php echo $value ?>" />
<?php
}
我一直在猜测你的代码是如何工作的,但这就是我的想法。您必须使用DB中的现有值填充表单,否则每次都只是重新开始。