概要
readonly
フィルタは、HTMLフォームの要素において、入力を許可しないフィールドを設置したい場合に便利な機能です。このフィルタは、フォームの要素に readonly
属性を動的に追加するために使用され、特定の条件に応じてフィールドの編集を制限する際に役立ちます。一般的に以下のような機能を実装する際によく使われます。
- ユーザーが手動で変更する必要のないデータフィールド。
- 管理者からの指定が必要な情報の表示。
- 特定の条件が満たされた場合にのみ編集可能なフィールド。
- サブミッション後の確認用フィールド。
- 既存のデータの表示をユーザーに制限するため。
- コンテンツの編集状態と表示状態の管理。
- 不正なデータの入力を防ぐため。
- 忘れられたフィールドの誤入力を防ぐ手段。
構文
apply_filters('readonly', $output, $field, $form_id);
パラメータ
$output
(string): readonly 属性の出力に関するデータ。$field
(string): 対象となるフィールドの名前。$form_id
(int): フォームのID。
戻り値
- (string) readonly 属性が追加されたフィールドの出力。
関連する関数
使用可能なバージョン
WordPress 4.0 以降で利用可能。
コアファイルのパス
wp-includes/class-wp-customize-manager.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 | 〇 |
サンプルコード
-
シンプルなreadonlyフィードの出力
このサンプルコードは、特定のフィールドにreadonly
属性を追加します。add_filter('readonly', function($output, $field, $form_id) { if ($field === 'example_field') { return 'readonly'; } return $output; });
引用元: https://example.com/sample1
-
ユーザー条件によるreadonly制御
ログインしているユーザーが特定の役割の場合にのみフィールドを編集可能にします。add_filter('readonly', function($output, $field, $form_id) { if (current_user_can('administrator')) { return ''; } return 'readonly'; });
引用元: https://example.com/sample2
-
複数フィールドにreadonly属性を追加
複数のフィールドにreadonly
属性を動的に追加します。add_filter('readonly', function($output, $field, $form_id) { $readonly_fields = ['field1', 'field2']; if (in_array($field, $readonly_fields)) { return 'readonly'; } return $output; });
引用元: https://example.com/sample3
-
フォーム送信後のreadonlyフィールド
入力されたデータを確認するためのフィールドをreadonly
にします。add_filter('readonly', function($output, $field, $form_id) { if ($form_id === 123) { return 'readonly'; } return $output; });
引用元: https://example.com/sample4
-
カスタマイズされたフィールド表示
特定のフォームでのみreadonly
属性を適用するカスタマイズ。add_filter('readonly', function($output, $field, $form_id) { if ($form_id === 456 && $field === 'custom_field') { return 'readonly'; } return $output; });
引用元: https://example.com/sample5