WordPress 主题如何给评论添加自定义字段

以前发过很多关于 WordPress 自定义字段的教程,比如 WordPress 批量编辑自定义字段,WordPress 后台新增字段面板实现自定义外链缩略图等等,今天说说如何将自定义字段添加到评论。但有时,wordpress 评论表单只提供四个默认的字段,分别为昵称、邮箱、网址和评论内容,只能满足一般的博客网站需求,如果想增加评论字段该怎么做?那么我们就具体看一看。

WordPress 主题如何给评论添加自定义字段

将这些代码添加到当前的主题 functions.php 文件或自定义插件中。

  1. add_action( 'add_meta_boxes_comment', 'rudr_comment_meta_box' );
  2. function rudr_comment_meta_box( $comment ) { // WP_Comment object
  3. 
    
  4.  add_meta_box(
  5.  'rudr_comment',
  6.  'Comment Settings',
  7.  'rudr_comment_meta_box_cb',
  8.  'comment', // instead of a post type parameter
  9.  'normal'
  10.  );
  11. 
    
  12. }
  13. 
    
  14. function rudr_comment_meta_box_cb() {
  15.  echo 'Hi!';
  16. }

WEEX交易所已上线平台币 WEEX Token (WXT)。WXT 作为 WEEX 交易所生态系统的基石,主要用于激励 WEEX 交易平台社区的合作伙伴、贡献者、先驱和活跃成员。

新用户注册 WEEX 账户、参与交易挖矿及平台其他活动,均可免费获得 WXT 空投奖励。

点此注册 WEEX 账户,即刻领取 1,600 WXT 新用户专属空投

下面使用 add_meta_box()了函数。add_meta_boxes_comment 但是你也可以 add_meta_boxes 顺便使用过滤器钩子。

  1. add_action( 'add_meta_boxes', 'rudr_comment_meta_box', 25, 2 );
  2. function rudr_comment_meta_box( $type, $comment ) {
  3. 
    
  4.  if( 'comment' !== $type ) {
  5.  return;
  6.  }

将上面的 rudr_comment_meta_box_cb 函数内容改成下面的代码

  1. <?php
  2. function rudr_comment_meta_box_cb( $comment ) {
  3. 
    
  4.  $comment_rating = get_comment_meta( $comment->comment_ID, 'comment_rating', true );
  5. 
    
  6.  wp_nonce_field( 'rudr_comment_update', 'comment_nonce' );
  7.  ?>
  8.   <table class="form-table">
  9.    <tr>
  10.     <th><label for="comment_rating">Rating</label></th>
  11.     <td>
  12.      <select id="comment_rating" name="comment_rating">
  13.       <option value="">Please choose…</option>
  14.  <?php
  15.  for( $i = 1; $i <=5; $i++ ) {
  16.  echo "<option value="$i"" . selected( $i, $comment_rating, true ) . ">$i</option>";
  17.  }
  18.  ?>
  19.      </select>
  20.     </td>
  21.    </tr>
  22.   </table>
  23.  <?php
  24. }

我在这里没有使用任何转义函数,因为我们可以信任 WordPress selected()函数,而这实际上是我们使用从数据库中获取的数据的唯一地方。

  1. add_action( 'edit_comment', 'rudr_save_comment' );
  2. function rudr_save_comment( $comment_id ) {
  3. 
    
  4.  if( ! isset( $_POST[ 'comment_nonce' ] ) || ! wp_verify_nonce( $_POST[ 'comment_nonce' ], 'rudr_comment_update' ) ) {
  5.  return;
  6.  }
  7. 
    
  8.  update_comment_meta(
  9.  $comment_id,
  10.  'comment_rating',
  11.   absint( $_POST[ 'comment_rating' ] )
  12.  );
  13. 
    
  14. }

只要我们的自定义字段中只有 1 到 5 个值,我们就可以轻松地使用 absint()函数进行清理。

使用 get_comment_meta()可以任何位置获取该自定义字段值。

本站资源均来源于网络或网友投稿,部分资源未经测试,难免存在BUG,所有资源只限于学习研究,不得商用。如使用本站下载的资源造成任何损失或发生侵权行为,均与本站无关。如不接受本声明请勿下载!本站资源如有侵权,请联系QQ:497149677核实后立即删除!
最客资源网 » WordPress 主题如何给评论添加自定义字段