两周来,我一直试图在管理员编辑评论表单中添加一个编辑自定义元字段。我设法在表单中显示该字段,但它无法更新它。
我还想将此字段添加到注册表和配置文件中。
这就是我目前所拥有的
add_action( \'comment_post\', \'save_comment_meta_data\' );
function save_comment_meta_data( $comment_id ) {
add_comment_meta( $comment_id, \'location\', $_POST[\'location\'] );
}
add_action( \'add_meta_boxes\', \'location_meta\' );
function location_meta() {
add_meta_box( \'location_meta_id\', \'Location of the Comment Author\', \'location_meta_call\', \'comment\', \'normal\', \'high\' );
}
function location_meta_call(){
$location = get_comment_meta(get_comment_ID(),\'location\', true);
?>
<label for="location">Location:</label>
<input type="text" name="location_meta_box_text" value="<?php echo $location ?>" id="location_meta_box_text" />
<?php
}
add_filter(\'comment_save_pre\',\'location_save\');
function location_save($comment_content){
global $wpdb;
$id = get_comment_ID();
$text = $_POST[\'location_meta_box_text\'];
$data = compact(\'text\');
$rval= $wpdb ->update($wpdb->comments,$data,compact(\'id\'));
update_comment_meta($id,\'location\',$text);
return $comment_content;
}
最合适的回答,由SO网友:dipali 整理而成
get\\u comment\\u ID函数不起作用
所以在location\\u meta\\u call函数中使用以下代码
function location_meta_call(){
$location = get_comment_meta($_GET["c"],\'location\', true);
}
add_filter(\'comment_save_pre\',\'location_save\');
function location_save($comment_content){
global $wpdb;
$id = $_POST[\'comment_ID\'];
$text = $_POST[\'location_meta_box_text\'];
update_comment_meta($id , \'location\', $text);
return $comment_content;
}
SO网友:Michael Lewis
尝试以下操作:
function location_save($comment_content){
$id = $_POST[\'comment_ID\'];
$text = $_POST[\'location_meta_box_text\'];
update_comment_meta($id,\'location\',$text);
return $comment_content;
}
get\\u comment\\u ID函数不起作用。
我不确定$rval/compact代码是从哪里获得的(我在核心中看到了它),但compact需要是紧凑的(\'comment\\u ID\'),而$ID var需要是$comment\\u ID才能工作。(我想……)无论如何,我不会这样保存它!只需使用更新注释元函数。