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関数などを用いて、投稿情報を取得する必要はあると思います。