概要
wp_revisions_enabled
フィルタは、WordPressにおいて投稿のリビジョンを有効にするかどうかを判断するために使用されます。このフィルタを利用することで、特定の条件下でリビジョン機能を制御することができます。具体的に、以下のような機能を実装する際によく使われます。
- 特定の投稿タイプに対してリビジョンを無効にする。
- ユーザーの権限に応じてリビジョンを制御する。
- プラグインが異なる投稿タイプのリビジョンを有効または無効にする。
- カスタムフィールドが追加された際にリビジョン機能を変更する。
- EditorやAdminが特定の条件でリビジョンを禁止する。
- 特定のカスタムテンプレートでリビジョン機能を制御する。
- 投稿の状態に基づいてリビジョンを無効にする。
- サイト全体のリビジョン機能を一括で無効化する。
このフィルタの構文は以下の通りです。
apply_filters( 'wp_revisions_enabled', bool $enabled, WP_Post $post );
パラメータ
$enabled
: 現在リビジョンが有効かどうかを示すブール値。$post
: 対象のWP_Postオブジェクト。
戻り値
このフィルタは、リビジョンが有効な場合はtrue
、無効な場合はfalse
を返します。
関連する関数
ワードプレスのバージョン
このフィルタは、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' );
このシンプルなコードは、サイト全体でリビジョン機能を無効化します。