ホームページ  >  記事  >  php教程  >  WordPress では、管理者以外のユーザーが記事の後にコメントできるのは 1 回のみに制限されています。

WordPress では、管理者以外のユーザーが記事の後にコメントできるのは 1 回のみに制限されています。

WBOY
WBOYオリジナル
2016-06-16 09:16:331329ブラウズ

WordPress では、管理者以外のユーザーが記事の後にコメントできるのは 1 回のみに制限されています

一部のネチズンは、WordPress で各記事にのみコメントできるようにする方法があるかどうかを質問しました。記事は一度?

この要件が役に立つかどうかはさておき、結局のところ、WordPress はさまざまなニーズを持つ人々のためのものです。この機能の実装は比較的簡単で、同じユーザー名またはメール アドレスが既にコメントを投稿しているかどうかを確認するために、現在の記事のすべてのコメントを検索するだけで済みます。

コードを実装するには、現在のテーマのfunctions.phpにコードを配置するだけです(IP判定もここに追加されるため、より安全です):

// 获取评论用户的ip,参考wp-includes/comment.php
function ludou_getIP() {
 $ip = $_SERVER['REMOTE_ADDR'];
 $ip = preg_replace( '/[^0-9a-fA-F:., ]/', '', $ip );
  
 return $ip;
}

function ludou_only_one_comment( $commentdata ) {
 global $wpdb;
 $currentUser = wp_get_current_user();
 
 // 不限制管理员发表评论
 if(empty($currentUser->roles) || !in_array('administrator', $currentUser->roles)) {
  $bool = $wpdb->get_var("SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = ".$commentdata['comment_post_ID']." AND (comment_author = '".$commentdata['comment_author']."' OR comment_author_email = '".$commentdata['comment_author_email']."' OR comment_author_IP = '".ludou_getIP()."') LIMIT 0, 1;");
 
  if($bool)
   wp_die('本站每篇文章只允许评论一次。<a href="'.get_permalink($commentdata['comment_post_ID']).'">点此返回</a>');
 }
 
 return $commentdata;
}
add_action( 'preprocess_comment' , 'ludou_only_one_comment', 20);

管理者が作成できるコメントの数に制限はないため、ユーザーが管理者であるかどうかを判断する方法を見てみましょう。

指定された ID を持つユーザーが管理者であるかどうかを判断します

この要件は、ほんの数行のコードで実装できます。

function ludou_is_administrator($user_id) {
 $user = get_userdata($user_id);
 if(!empty($user->roles) && in_array('administrator', $user->roles))
  return 1; // 是管理员
 else
  return 0; // 非管理员
}

現在ログインしているユーザーが管理者であるかどうかを確認します

現在ログインしているユーザーが管理者であるかどうかを確認したい場合は、次の関数を使用できます:

function ludou_is_administrator() {
 // wp_get_current_user函数仅限在主题的functions.php中使用
 $currentUser = wp_get_current_user();

 if(!empty($currentUser->roles) && in_array('administrator', $currentUser->roles)) 
  return 1; // 是管理员
 else
  return 0; // 非管理员
}

興味のある記事:

  • WordPress でフィルターを作成および追加するための関連する PHP 関数の詳細な説明
  • WordPress でサイドバーを作成および取得するための PHP 関数の説明
  • WordPress のメディア ファイルにカテゴリとタグを追加する PHP 関数の実装
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。