概要
acf/upload_prefilter
フィルタは、添付ファイルをアップロードする前に検証を実行するために使用されます。このフィルタを使うことで、アップロードされるファイルに対して特定の条件や制限を設定することが可能です。例えば、ファイルサイズの制限や、特定のファイル形式の許可などを行うことができます。
よく使われる機能の例
- アップロードファイルのサイズ制限
- ファイル形式の制限
- セキュリティチェック(悪意のあるファイルの検出)
- 必要なメタデータのチェック
- アップロード前にキャンセルする条件の設定
- ユーザーのアップロード権限の検証
構文
add_filter('acf/upload_prefilter', 'your_custom_function');
パラメータ
$file
:アップロードされるファイルの情報を含む配列。
戻り値
$file
または エラーメッセージの配列。
対応するプラグインおよびバージョン
- Advanced Custom Fields (ACF):バージョン 5.0 以降
- WordPress:バージョン 4.0 以降
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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('acf/upload_prefilter', 'my_acf_upload_prefilter');
function my_acf_upload_prefilter($file) {
if ($file['size'] > 5000000) { // 5MBを超えるファイルは拒否
return array('error' => 'ファイルサイズは5MB以内にしてください。');
}
return $file;
}
このサンプルコードは、アップロードされるファイルのサイズをチェックし、5MBを超える場合はエラーメッセージを返します。
サンプルコード 2
add_filter('acf/upload_prefilter', 'custom_file_type_filter');
function custom_file_type_filter($file) {
$allowed_types = array('image/jpeg', 'image/png');
if (!in_array($file['type'], $allowed_types)) {
return array('error' => 'JPEGまたはPNG形式のファイルのみアップロード可能です。');
}
return $file;
}
このサンプルコードは、アップロード可能なファイル形式をJPEGまたはPNGに制限しています。
サンプルコード 3
add_filter('acf/upload_prefilter', 'check_for_malicious_files');
function check_for_malicious_files($file) {
// 簡易なセキュリティチェック
$dangerous_extensions = array('php', 'html', 'js');
$file_extension = pathinfo($file['name'], PATHINFO_EXTENSION);
if (in_array($file_extension, $dangerous_extensions)) {
return array('error' => '危険なファイル形式はアップロードできません。');
}
return $file;
}
このサンプルコードは、アップロードされるファイルの拡張子が危険な場合、そのアップロードを拒否します。
サンプルコード 4
add_filter('acf/upload_prefilter', 'require_metadata_check');
function require_metadata_check($file) {
if (empty($file['name'])) {
return array('error' => 'ファイル名が指定されていません。');
}
return $file;
}
このサンプルコードは、ファイル名が指定されていない場合のエラーチェックを行います。
サンプルコード 5
add_filter('acf/upload_prefilter', 'restrict_file_upload_by_user');
function restrict_file_upload_by_user($file) {
if (!current_user_can('upload_files')) {
return array('error' => 'このアクションを実行する権限がありません。');
}
return $file;
}
このサンプルコードは、ユーザーがファイルをアップロードする権限を持っているかを確認し、権限がない場合はエラーメッセージを返します。