スポンサーリンク

WordPressのコメント欄から名前とURIを消す話

要約

・コメント投稿時、ユーザ名/URI入力欄が表示されないようにする

・コメント表示時、万が一ユーザ名/URIデータがあっても表示されないようにする

コメント投稿時 入力欄を削除

入力欄を表示されないようにするため、functions.phpに以下を追記する

<?php

/*コメント欄から各項目を削除*/
function hide_comment_fields_author($defaults){
  $defaults['fields']['author'] = '';
  return $defaults;
}
add_filter( 'comment_form_defaults', 'hide_comment_fields_author');

function hide_comment_fields_email($defaults){
  $defaults['fields']['email'] = '';
  return $defaults;
}
add_filter( 'comment_form_defaults', 'hide_comment_fields_email');

function hide_comment_fields_url($defaults){
  $defaults['fields']['url'] = '';
  return $defaults;
}
add_filter( 'comment_form_defaults', 'hide_comment_fields_url');
/*コメント欄から各項目を削除 ここまで*/

?>

参考サイト。以下では上記処理を一括指定する方法が公開されている。というか、comment_form_defautsに$defaults[‘fields’][***]を指定する関数を指定しているので一つにまとめられる。

コメント表示時、名前/URI情報を表示しない

仮に情報としてこれらが入力されていても、表示されないようにする。

functions.php 側

まずfunctions.php側でコメント表示時に指定するコールバック関数を作成。

この時、URLや投稿者名を取得して表示する箇所を実装しないでおく。

なおついでアバターの記述も無効化した。

<?php 

/* comments.phpで呼び出すwp_list_commentsに指定するコールバック関数 */
function mytheme_comment($comment, $args, $depth) {
   $GLOBALS['comment'] = $comment; ?>
   <li <?php comment_class(); ?> id="li-comment-<?php comment_ID() ?>">
     <div id="comment-<?php comment_ID(); ?>">
      <div class="comment-author vcard">
         <?php /*アバターも無効化*/ /*echo get_avatar($comment,$size='48',$default='<path_to_url>' );*/ ?>
         <?php /*コメント投稿時指定のURLを非表示*/ /*echo get_comment_author_link( $comment_ID );*/ ?>
         <?php /*コメント投稿時指定の投稿者名を非表示*/ /*printf(__('<cite class="fn">%s</cite> <span class="says">より:</span>'), get_comment_author())*/ ?>
      </div>
      <?php if ($comment->comment_approved == '0') : ?>
         <em><?php _e('Your comment is awaiting moderation.') ?></em>
         <br />
      <?php endif; ?>

      <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s at %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link(__('(Edit)'),'  ','') ?></div>

      <?php comment_text() ?>

      <div class="reply">
         <?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
      </div>
     </div>
<?php
        }
/* comments.phpで呼び出すwp_list_commentsに指定するコールバック関数 ここまで*/

?>

comments.php 側

comments.php側では、作成した関数をwp_list_commentsのコールバックに指定する。

<?php
if (post_password_required()) {
  return;
}
?>

<div id="comments">
<?php if (have_comments()) :?>
  <h3 id="comments-count"><?php echo get_comments_number().' 件のコメント'; ?></h3>
  <ul id="comments-list">
  <?php wp_list_comments(array(
      'avatar_size'=>48,
      'style'=>'ul',
      'type'=>'all',
      'callback'=>'mytheme_comment'
    )); 
  ?>
    
  </ul>
<?php if (get_comment_pages_count() > 1) : ?>
  <ul id="comments-pagination">
    <li id="prev-comments"><?php previous_comments_link('&lt;&lt; 前のコメント'); ?></li>
    <li id="next-comments"><?php next_comments_link('次のコメント &gt;&gt;'); ?></li>
  </ul>
<?php endif; endif; ?>
<?php comment_form(); ?>
</div><!-- comments -->

参考サイト。

https://deluxeblogtips.com/wordpress-remove-author-link-in/

あとがき

コメント欄でトラブルがあったのでこれを機に消してしまうことにした。

実際ほぼすべての状況において名前やメールアドレスを「サイト管理者が」持つことは有害無益なので入力欄などないほうがいい。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: