acf_validate_attachment()


WordPressの関数acf_validate_attachment()は、アップロードされたファイルや添付ファイルのバリデーションを行うために使用されます。この関数はAdvanced Custom Fields (ACF)プラグインで利用されます。

構文

acf_validate_attachment( array $file, $field );

引数の説明:

  • $file (array) — バリデーションを行うファイル情報を含む配列。
  • $field (mixed) — 関連付けられたACFフィールドデータ。通常は配列またはオブジェクト。

例 1: JPGファイルのみを許可する

アップロードされたファイルがJPG形式であるかを確認します。

add_filter( 'acf/validate_attachment', function( $errors, $file, $field ) {
    if ( $file['type'] !== 'image/jpeg' ) {
        $errors[] = 'JPG形式のファイルのみアップロード可能です。';
    }
    return $errors;
}, 10, 3 );

例 2: ファイルサイズの制限を追加する

ファイルサイズが2MBを超えていないかをチェックします。

add_filter( 'acf/validate_attachment', function( $errors, $file, $field ) {
    if ( $file['size'] > 2 * 1024 * 1024 ) {
        $errors[] = 'ファイルサイズは2MB以下である必要があります。';
    }
    return $errors;
}, 10, 3 );

例 3: 特定のフィールドに対してのみバリデーションを実行

特定のACFフィールドに関連付けられたファイルにのみ制限を適用します。

add_filter( 'acf/validate_attachment', function( $errors, $file, $field ) {
    if ( $field['name'] === 'custom_image_field' && $file['type'] !== 'image/png' ) {
        $errors[] = 'このフィールドではPNG形式の画像のみアップロードできます。';
    }
    return $errors;
}, 10, 3 );

例 4: 複数のファイルタイプを許可する

JPGとPNG形式のファイルを許可します。

add_filter( 'acf/validate_attachment', function( $errors, $file, $field ) {
    $allowed_types = array( 'image/jpeg', 'image/png' );
    if ( !in_array( $file['type'], $allowed_types, true ) ) {
        $errors[] = 'JPGまたはPNG形式のファイルのみ許可されています。';
    }
    return $errors;
}, 10, 3 );

例 5: ファイルの解像度をチェックする

アップロードされた画像の解像度を確認します。

add_filter( 'acf/validate_attachment', function( $errors, $file, $field ) {
    if ( strpos( $file['type'], 'image' ) === 0 ) {
        $dimensions = getimagesize( $file['tmp_name'] );
        if ( $dimensions[0] < 800 || $dimensions[1] < 600 ) {
            $errors[] = '画像の解像度は800x600ピクセル以上である必要があります。';
        }
    }
    return $errors;
}, 10, 3 );