概要
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