ワードプレスのcomments_openフィルタの使用方法・解説

概要

comments_openフィルタは、投稿ページがコメント投稿を許可されているか調べる際に使用されるフィルタです。主に以下の機能を実装する際に利用されます:

  1. コメント機能の有効/無効のカスタマイズ
  2. ユーザーの権限に基づいたコメント許可の制御
  3. 特定の条件に基づくコメントの自動オフ
  4. 投稿タイプごとのコメント設定の変更
  5. 投稿の状態(公開、非公開等)に基づくフィルタリング
  6. コメントスパムの防止機能の追加
  7. テーマやプラグインによりコメント機能の拡張
  8. コメントが許可される際のメッセージカスタマイズ

構文

add_filter( 'comments_open', 'your_function_name', 10, 2 );

パラメータ

  • $open (bool) – コメントが開いているかどうかの真偽値。
  • $post_id (int) – 投稿のID。

戻り値

このフィルタは、真偽値(コメントが開いている場合は true、閉じている場合は false)を返します。

関連する関数

comments_open

使用可能なバージョン

このフィルタは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;
});

このコードは、コメントが閉じられている場合にカスタムメッセージを表示します。

引用元のページ

  1. https://developer.wordpress.org/reference/hooks/comments_open/
  2. https://developer.wordpress.org/reference/functions/current_user_can/
  3. https://developer.wordpress.org/reference/functions/get_post_type/
  4. https://developer.wordpress.org/reference/functions/get_post_status/
  5. https://developer.wordpress.org/reference/functions/get_option/

このフィルタは、特定のWordPressバージョンで非推奨または削除されていません。

この関数について質問する


上の計算式の答えを入力してください