画像をメディアライブラリにアップロードした時に、アップロードした画像の、タイトルと、ファイル名を変更したものがアップロードされるプログラムを作っています。
下記のコードについて
画像をアップロードした時に、画像タイトルが「d-」とついた画像が複製されます。「アップロード中にエラーが発生しました。後ほど再度お試しください。」というエラーが表示されます。複製は、出来ていました。
出来ない事
アップロードしたファイルの取得と、複製したファイル名を変更することです。
取得した画像のファイル名の頭に「d-」というのを付けたいのですが、調べても出来ませんでした。
わかる方教えてほしいです。
//画像ファイル名をアップロード時に自動変更 function attachment() { $wp_upload_dir = wp_upload_dir(); //ファイルのアップロード先ディレクトリを取得 $filename = 'http://test.com/wp-content/uploads/photo15.png'; //商品コードから読み込むファイルの指定 $wp_filetype = wp_check_filetype(basename($filename), null); //ファイル名の拡張子、mime形式を配列で取得 $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . basename($filename), 'post_mime_type' => $wp_filetype['type'], //mime形式を指定「image/png」「image/jpeg」など 'post_title' => 'd-' . preg_replace('/.[^.]+$/', '', basename($filename)), //ファイル名を指定 'post_content' => '', //空の文字列を指定 'post_status' => 'inherit' //投稿ステータスを指定 ); remove_action('add_attachment', 'attachment'); $attach_id = wp_insert_attachment($attachment, $filename, 0); //添付ファイルをメディアライブラリにアップロード。変数「attach_id」に返ってきたIDを格納 require_once( ABSPATH . '/wp-admin/includes/image.php' ); // $attach_data = wp_generate_attachment_metadata($attach_id, $filename); //データベース書き込み wp_update_attachment_metadata($attach_id, $attach_data); //データベース書き込み add_action('add_attachment', 'attachment'); $info = pathinfo($filename); $ext = empty($info['extension']) ? '' : '.' . $info['extension']; if ($info['filename'] != 'sitemap') { $filename = strtolower(time() . $ext); } } add_filter('add_attachment', 'attachment', 10);
回答1件
あなたの回答
tips
プレビュー