我正在尝试为我的所有帖子添加一个自定义字段,当然还保存/读取该值。作为一个起点,我从Wordpress Codex中选取了这个例子,并将其简化为基本内容。我知道它有严重的安全缺陷,我只是想了解它。
我目前面临的问题是什么都救不了。在查看保存帖子时发布的内容后,我注意到输入的键&;中不存在值$_POST
数组。该属性存在于数据库中,但当然没有值。
我还注意到变量$post
传递给add_input
是空的,但我不知道为什么(我想这就是问题所在?)。
这是我函数中的代码。php:
function add_custom_field() {
add_meta_box( \'my_field\', \'My Field\', \'add_input\', \'post\' );
}
add_action( \'add_meta_boxes\', \'add_custom_field\' );
function add_input( $post ) {
$value = get_post_meta( $post->ID, \'my_key\', true );
echo \'<input type="text" value="\' . $value . \'" id="my_id">\';
}
function save( $post_id ) {
$mydata = sanitize_text_field( $_POST[\'my_id\'] );
update_post_meta( $post->ID, \'my_key\', $mydata );
}
add_action( \'save_post\', \'save\' );
您在上面的代码中看到任何错误吗?你对我给你的信息有什么评论吗?为什么没有向服务器发布任何内容?
最合适的回答,由SO网友:cybmeta 整理而成
您有两个问题:
1.-您没有通过正确的帖子ID。要解决此问题,请更改:
update_post_meta( $post->ID, \'my_key\', $mydata );
收件人:
update_post_meta( $post_id, \'my_key\', $mydata );
2您没有正确创建输入
name
缺少属性:
更改:
echo \'<input type="text" value="\' . $value . \'" id="my_id">\';
收件人:
echo \'<input type="text" value="\' . $value . \'" id="my_id" name="my_id">\';