以前发过很多关于 WordPress 自定义字段的教程,比如 WordPress 批量编辑自定义字段,WordPress 后台新增字段面板实现自定义外链缩略图等等,今天说说如何将自定义字段添加到评论。但有时,wordpress 评论表单只提供四个默认的字段,分别为昵称、邮箱、网址和评论内容,只能满足一般的博客网站需求,如果想增加评论字段该怎么做?那么我们就具体看一看。
将这些代码添加到当前的主题 functions.php 文件或自定义插件中。
-
add_action( 'add_meta_boxes_comment', 'rudr_comment_meta_box' );
-
function rudr_comment_meta_box( $comment ) { // WP_Comment object
-
add_meta_box(
-
'rudr_comment',
-
'Comment Settings',
-
'rudr_comment_meta_box_cb',
-
'comment', // instead of a post type parameter
-
'normal'
-
);
-
}
-
function rudr_comment_meta_box_cb() {
-
echo 'Hi!';
-
}
下面使用 add_meta_box()了函数。add_meta_boxes_comment 但是你也可以 add_meta_boxes 顺便使用过滤器钩子。
-
add_action( 'add_meta_boxes', 'rudr_comment_meta_box', 25, 2 );
-
function rudr_comment_meta_box( $type, $comment ) {
-
if( 'comment' !== $type ) {
-
return;
-
}
将上面的 rudr_comment_meta_box_cb 函数内容改成下面的代码
-
<?php
-
function rudr_comment_meta_box_cb( $comment ) {
-
$comment_rating = get_comment_meta( $comment->comment_ID, 'comment_rating', true );
-
wp_nonce_field( 'rudr_comment_update', 'comment_nonce' );
-
?>
-
<table class="form-table">
-
<tr>
-
<th><label for="comment_rating">Rating</label></th>
-
<td>
-
<select id="comment_rating" name="comment_rating">
-
<option value="">Please choose…</option>
-
<?php
-
for( $i = 1; $i <=5; $i++ ) {
-
echo "<option value=\"$i\"" . selected( $i, $comment_rating, true ) . ">$i</option>";
-
}
-
?>
-
</select>
-
</td>
-
</tr>
-
</table>
-
<?php
-
}
我在这里没有使用任何转义函数,因为我们可以信任 WordPress selected()函数,而这实际上是我们使用从数据库中获取的数据的唯一地方。
-
add_action( 'edit_comment', 'rudr_save_comment' );
-
function rudr_save_comment( $comment_id ) {
-
if( ! isset( $_POST[ 'comment_nonce' ] ) || ! wp_verify_nonce( $_POST[ 'comment_nonce' ], 'rudr_comment_update' ) ) {
-
return;
-
}
-
update_comment_meta(
-
$comment_id,
-
'comment_rating',
-
absint( $_POST[ 'comment_rating' ] )
-
);
-
}
只要我们的自定义字段中只有 1 到 5 个值,我们就可以轻松地使用 absint()函数进行清理。
使用 get_comment_meta()可以任何位置获取该自定义字段值。