WordPress投稿ページの「コメントの許可」状態を取得する方法

WordPressの投稿管理画面では、「投稿ページのコメントを許可するか」を設定することができます。

具体的に言うと、投稿画面で「ディスカッション」オプションを表示させているときに、「コメント投稿を許可する。」が有効になっているかどうかということです。

ディスカッション項目のコメントの投稿許可する設定

また、投稿一覧の「クイック編集」から変更できる「コメントの許可」設定でも同様の設定ができます。

クイック編集の「コメント許可」設定

以下では、これらの「コメントの許可設定状態」をPHPコードで取得する方法の紹介です。

スポンサーリンク
レクタングル(大)広告

コメントの許可状態取得関数

とりあえずまずは、「コメントの許可状態」を取得する関数を作ってしまいます。

functions.phpに以下のコードを追記してください。

//コメントが許可されているか
function is_comment_open(){
  global $post;
  if ( isset($post->comment_status) ) {
    return $post->comment_status == 'open';
  }
  return false;
}

これは単に、$postグローバル変数から、comment_statusメンバー変数の値がopenかを判断しているだけの関数です。大したことはしていないのですが、関数にまとめておくと再利用がきくので。

ただ、$postは、ループ内で「今の投稿データ」が格納されるグローバル変数です。なので、ループ外で使用するとデータが入らずfalseを返すようになっています。

関数の使用方法

先程の関数は、以下のように使用します。PHPを普段使用している人ならば、問題なく利用できるかと思います。

コメントが許可されているとき

投稿のコメント許可が有効

if ( is_comment_open() ) {
  //コメントが許可されているときの処理
}

コメントが許可されていないとき

投稿のコメント許可が無効

if ( !is_comment_open() ) {
  //コメントが許可されていないときの処理
}

まとめ

今回、グローバル変数の$postを使った方法なので、基本的にループ内でないと利用できません。ただ、「コメント許可の有無」を取得する必要がある場合は、大抵ループ内なので特に問題ないかなと。

ループ外から特定の投稿の「コメント許可状態」を取得するには、get_post関数などを用いて、投稿情報を取得する必要はあると思います。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告

スポンサーリンク