acf_upload_file()


WordPressのacf_upload_file()関数は、Advanced Custom Fields(ACF)プラグインを使用してファイルをアップロードするための関数です。この関数は、指定されたフィールドにファイルをアップロードし、そのファイルのIDを返します。

構文

acf_upload_file( array $file, string $field_name, int|string $post_id = 0 );

引数の説明:

  • $file (array) — アップロードするファイルの情報を含む配列。通常、$_FILES配列の要素を指定します。
  • $field_name (string) — ファイルをアップロードするACFフィールドの名前。
  • $post_id (int|string) — ファイルを関連付ける投稿ID。デフォルトは0で、現在の投稿を指します。

例1: 基本的なファイルアップロード

この例では、$_FILES配列を使用してファイルをアップロードします。

$file = $_FILES['my_file']; $field_name = 'my_file_field'; $post_id = get_the_ID(); $file_id = acf_upload_file($file, $field_name, $post_id);

例2: カスタムフィールドにファイルをアップロード

特定のカスタムフィールドにファイルをアップロードし、そのファイルIDを取得します。

$file = array('name' => 'example.jpg', 'tmp_name' => '/tmp/phpabc123'); $field_name = 'custom_file_field'; $post_id = 456; $file_id = acf_upload_file($file, $field_name, $post_id);

例3: 現在の投稿にファイルをアップロード

現在の投稿にファイルをアップロードし、そのファイルIDを取得します。

$file = $_FILES['my_file']; $field_name = 'current_post_file'; $file_id = acf_upload_file($file, $field_name);

例4: ファイルのアップロードとメタデータの更新

ファイルをアップロードし、そのファイルIDを投稿のメタデータとして保存します。

$file = $_FILES['my_file']; $field_name = 'file_meta'; $post_id = get_the_ID(); $file_id = acf_upload_file($file, $field_name, $post_id); update_post_meta($post_id, 'uploaded_file_id', $file_id);

例5: ファイルのアップロードとエラーチェック

ファイルのアップロード中にエラーが発生した場合、エラーメッセージを表示します。

$file = $_FILES['my_file']; $field_name = 'error_check_field'; $post_id = get_the_ID(); $file_id = acf_upload_file($file, $field_name, $post_id); if(is_wp_error($file_id)){ echo $file_id->get_error_message(); }

例6: 複数ファイルのアップロード

複数のファイルをアップロードし、それぞれのファイルIDを取得します。

foreach($_FILES['my_files']['name'] as $key => $name){ $file = array('name' => $name, 'tmp_name' => $_FILES['my_files']['tmp_name'][$key]); $field_name = 'multi_file_field'; $post_id = get_the_ID(); $file_id = acf_upload_file($file, $field_name, $post_id); }

例7: ファイルのアップロードとリダイレクト

ファイルのアップロード後にユーザーを別のページにリダイレクトします。

$file = $_FILES['my_file']; $field_name = 'redirect_file'; $post_id = get_the_ID(); $file_id = acf_upload_file($file, $field_name, $post_id); if($file_id){ wp_redirect('/success-page'); exit; }

例8: ファイルのアップロードとメール送信

ファイルのアップロード後に管理者にメールを送信します。

$file = $_FILES['my_file']; $field_name = 'email_file'; $post_id = get_the_ID(); $file_id = acf_upload_file($file, $field_name, $post_id); if($file_id){ wp_mail('admin@example.com', 'New File Uploaded', 'A new file has been uploaded.'); }

注意点

  • ファイルのアップロードには適切なパーミッションが必要です。
  • アップロードするファイルのサイズと形式は、サーバーの設定に依存します。
  • エラーハンドリングを適切に行い、セキュリティを確保してください。