概要
comments_open
フィルタは、投稿ページがコメント投稿を許可されているか調べる際に使用されるフィルタです。主に以下の機能を実装する際に利用されます:
- コメント機能の有効/無効のカスタマイズ
- ユーザーの権限に基づいたコメント許可の制御
- 特定の条件に基づくコメントの自動オフ
- 投稿タイプごとのコメント設定の変更
- 投稿の状態(公開、非公開等)に基づくフィルタリング
- コメントスパムの防止機能の追加
- テーマやプラグインによりコメント機能の拡張
- コメントが許可される際のメッセージカスタマイズ
構文
add_filter( 'comments_open', 'your_function_name', 10, 2 );
パラメータ
$open
(bool) – コメントが開いているかどうかの真偽値。$post_id
(int) – 投稿のID。
戻り値
このフィルタは、真偽値(コメントが開いている場合は true
、閉じている場合は false
)を返します。
関連する関数
使用可能なバージョン
このフィルタはWordPress 2.0以降で使用可能です。
コアファイルのパス
wp-includes/comment-template.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1: コメントを非表示にする
add_filter('comments_open', function($open, $post_id) {
if (get_post_type($post_id) === 'post') {
return false; // 投稿タイプが'post'の場合、コメントを閉じる
}
return $open;
});
このコードは、投稿タイプが post
の場合にコメントを閉じるサンプルです。
サンプルコード2: 特定のユーザーだけコメントを許可
add_filter('comments_open', function($open, $post_id) {
if (!current_user_can('administrator')) {
return false; // 管理者以外はコメントを許可しない
}
return $open;
});
このコードは、管理者ユーザーのみがコメントを残せるように制御しています。
サンプルコード3: スパムコメントを防ぐ
add_filter('comments_open', function($open, $post_id) {
$options = get_option('your_plugin_options');
if ($options['disable_comments']) {
return false; // プラグインのオプションでコメントを停止
}
return $open;
});
このコードは、プラグインの設定に基づいてコメント機能を無効化します。
サンプルコード4: 投稿が非公開の場合はコメントを閉じる
add_filter('comments_open', function($open, $post_id) {
if ('private' === get_post_status($post_id)) {
return false; // 投稿が非公開の場合、コメントを閉じる
}
return $open;
});
このコードは、投稿が非公開である場合にコメントを閉じます。
サンプルコード5: カスタムメッセージを表示する
add_filter('comments_open', function($open, $post_id) {
if (!$open) {
echo 'この投稿に対するコメントは閉じられています。'; // コメントが閉じている場合のメッセージ
}
return $open;
});
このコードは、コメントが閉じられている場合にカスタムメッセージを表示します。
引用元のページ
- https://developer.wordpress.org/reference/hooks/comments_open/
- https://developer.wordpress.org/reference/functions/current_user_can/
- https://developer.wordpress.org/reference/functions/get_post_type/
- https://developer.wordpress.org/reference/functions/get_post_status/
- https://developer.wordpress.org/reference/functions/get_option/
このフィルタは、特定のWordPressバージョンで非推奨または削除されていません。