概要
get_default_comment_status
フィルタは、投稿タイプのコメントステータスを取得するために使用される重要なフィルタです。このフィルタを使うことで、投稿タイプに応じてコメントのデフォルトの有効/無効を制御することができます。フィルタは特に、コメントを有効または無効にしたい場合や、特定の条件に基づいてコメントの状態を変更したいときに有用です。以下に、get_default_comment_status
フィルタがどのような機能を実装する際によく使われるかの例を挙げます。
- 特定の投稿タイプに対してコメントを無効にする
- 投稿が特定のカテゴリーに属する場合のコメント状態を変更する
- カスタム投稿タイプ用のデフォルトコメント設定を追加する
- ショートコードを使用して、生成するコメントのステータスを変更する
- ユーザーロールに基づいてコメントの有効無効を制御する
- 過去の投稿の新しいデフォルトコメント設定を適用する
- 特定の条件に基づいて、固定ページのデフォルトコメント設定を変更する
- テーマオプションに基づいてコメントの有無を動的に制御する
構文
add_filter( 'get_default_comment_status', 'your_function_name', 10, 2 );
パラメータ
- $status (string): デフォルトのコメントステータス。通常は
'open'
または'closed'
のいずれかです。 - $post_type (string): 投稿のタイプ(例:
'post'
,'page'
, カスタム投稿タイプなど)。
戻り値
- (string): フィルタリングされたコメントステータス。
関連する関数
このフィルタを使用可能なバージョン
- WordPress 2.9.0以降
ワードプレスのコアファイルのパス
wp-includes/comment.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('get_default_comment_status', 'custom_default_comment_status', 10, 2);
function custom_default_comment_status($status, $post_type) {
if ($post_type === 'custom_post_type') {
return 'closed'; // カスタム投稿タイプの場合、コメントを無効にします
}
return $status;
}
このコードは、特定のカスタム投稿タイプに対してコメントを無効にするサンプルです。
サンプルコード 2
add_filter('get_default_comment_status', 'set_default_comments_for_category', 10, 2);
function set_default_comments_for_category($status, $post_type) {
if (is_category('no-comments')) {
return 'closed'; // 'no-comments'カテゴリーの場合、コメントを無効にします
}
return $status;
}
このコードは、特定のカテゴリーに投稿される場合にコメントを無効にするサンプルです。
サンプルコード 3
add_filter('get_default_comment_status', 'modify_comment_status_based_on_user', 10, 2);
function modify_comment_status_based_on_user($status, $post_type) {
if (current_user_can('editor')) {
return 'open'; // エディターロールのユーザーの場合、コメントを有効にします
}
return $status;
}
このコードは、特定のユーザーロールに基づいてコメントのデフォルト設定を変更するサンプルです。
サンプルコード 4
add_filter('get_default_comment_status', 'default_comment_status_for_pages', 10, 2);
function default_comment_status_for_pages($status, $post_type) {
if ($post_type === 'page') {
return 'closed'; // 固定ページの場合、デフォルトでコメントを無効にします
}
return $status;
}
このコードは、すべての固定ページに対してデフォルトでコメントを無効にするサンプルです。
サンプルコード 5
add_filter('get_default_comment_status', 'dynamic_comments_setting', 10, 2);
function dynamic_comments_setting($status, $post_type) {
// テーマオプションに基づいてコメントの設定を変更する
if (get_option('enable_comments_on_posts') == 'no') {
return 'closed'; // コメントがオフの場合、デフォルトで無効
}
return $status;
}
このコードは、テーマのオプションに基づいて投稿にコメントを有効または無効にするサンプルです。