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

概要

wp_revisions_enabledフィルタは、WordPressにおいて投稿のリビジョンを有効にするかどうかを判断するために使用されます。このフィルタを利用することで、特定の条件下でリビジョン機能を制御することができます。具体的に、以下のような機能を実装する際によく使われます。

  1. 特定の投稿タイプに対してリビジョンを無効にする。
  2. ユーザーの権限に応じてリビジョンを制御する。
  3. プラグインが異なる投稿タイプのリビジョンを有効または無効にする。
  4. カスタムフィールドが追加された際にリビジョン機能を変更する。
  5. EditorやAdminが特定の条件でリビジョンを禁止する。
  6. 特定のカスタムテンプレートでリビジョン機能を制御する。
  7. 投稿の状態に基づいてリビジョンを無効にする。
  8. サイト全体のリビジョン機能を一括で無効化する。

このフィルタの構文は以下の通りです。

apply_filters( 'wp_revisions_enabled', bool $enabled, WP_Post $post );

パラメータ

  • $enabled: 現在リビジョンが有効かどうかを示すブール値。
  • $post: 対象のWP_Postオブジェクト。

戻り値

このフィルタは、リビジョンが有効な場合はtrue、無効な場合はfalseを返します。

関連する関数

wp_revisions_enabled

ワードプレスのバージョン

このフィルタは、WordPress 3.6以降で使用可能です。

コアファイルのパス

wp-includes/post.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( 'wp_revisions_enabled', 'disable_revisions_for_custom_post_type', 10, 2 );

function disable_revisions_for_custom_post_type( $enabled, $post ) {
    if ( 'custom_post_type' === $post->post_type ) {
        return false;
    }
    return $enabled;
}

このコードは、カスタム投稿タイプcustom_post_typeに対してリビジョンを無効にします。

サンプルコード2: ユーザー権限に応じてリビジョンを制御する

add_filter( 'wp_revisions_enabled', 'restrict_revisions_by_user_role', 10, 2 );

function restrict_revisions_by_user_role( $enabled, $post ) {
    if ( current_user_can( 'editor' ) ) {
        return true; // Editors can have revisions
    }
    return false; // Others cannot
}

このコードは、ユーザーが編集者の場合にのみリビジョンを有効にします。

サンプルコード3: 特定の条件でリビジョンを無効にする

add_filter( 'wp_revisions_enabled', 'conditional_revisions', 10, 2 );

function conditional_revisions( $enabled, $post ) {
    if ( isset( $post->post_status ) && 'draft' === $post->post_status ) {
        return false; // Disable revisions for drafts
    }
    return $enabled;
}

ドラフト状態の投稿に対してリビジョンを無効にします。

サンプルコード4: 投稿の状態に基づいてリビジョンを無効にする

add_filter( 'wp_revisions_enabled', 'status_based_revisions', 10, 2 );

function status_based_revisions( $enabled, $post ) {
    if ( 'trash' === $post->post_status ) {
        return false; // Disable revisions for trashed posts
    }
    return $enabled;
}

このコードは、ゴミ箱に入れられた投稿に対してリビジョンを無効にします。

サンプルコード5: サイト全体でリビジョンを無効化する

add_filter( 'wp_revisions_enabled', '__return_false' );

このシンプルなコードは、サイト全体でリビジョン機能を無効化します。

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


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