質問: 画像を一括アップロードして、それぞれの画像に同時に投稿を自動的に作成する方法を教えてください。 複数の画像を既存の投稿にアップロードする方法を知っていますが、これは別のシナリオです。これはアセットの大規模なカタログ用で、各カスタム投稿タイプの投稿は画像アセットを表します(したがって、単一の画像が各投稿の「おすすめ画像」として割り当てられます)。システム全体は、一度に1つずつ資産を作成するのに最適ですが、時間がかかりすぎます。一度に複数の画像を「一括」アップロードしてから、各画像用に新しい投稿を作成し、その画像を「おすすめの画像」として新しい投稿に添付する必要があります。各投稿にテキストコンテンツは入力されません。メタデータとカスタム分類の割り当てがいくつかあるだけなので、このバッチ作成プロセス中にメタデータと分類をバッチ割り当てすることは可能です。私はxml-rpc投稿作成(通常は画像のアップロード/割り当てを処理しない)からファイルをサーバーディレクトリからメディアライブラリに引っ張るプラグイン(投稿作成は対象外)、および複数ファイルのjqueryの解決策を研究しました。アップローダ(基本的にはディレクトリ内のファイルをダンプするだけです)。私はプラグインとテーマを構築したことで、phpには比較的精通していますが、一時的な容量でファイルをサーバーに送信し、それからファイルに基づいて投稿を生成するという最初のステップが必要です。アップロードし、バッチ全体に識別用のメタデータを割り当てます。私はこれがカスタム管理パネルで行われることを望みます、しかし私がwp-adminの外でこれをしなければならないならば、それも大丈夫です...アイデア?
回答: このスクリプトは概念の証明(テスト済みで動作中)です。プラグインではなく、ハッキングされることを意図しています。いくつかのことを前提としています。 これはwp_insert_postを使用するので、管理フックにフックしないことをお勧めします。一度だけ実行してください。 画像はwp-content\uploadsフォルダにある必要があります。これを変更すると、ジャンプするにはさらにフープが必要になります。この例では、uploadsフォルダ内の\imagesというカスタムフォルダを使用しています。この部分は変更できます。 それは少しのエラーチェックもしません、結果が異なるかもしれないように私は20のイメージを含むフォルダーでそれをテストしました:) 以下のコードはwp-content\uploads\imagesフォルダを繰り返し処理し、添付されている画像の名前に基づいて投稿のタイトルを作成します。あなたはおそらくこれをもっと良いものに変更したいと思うか、あなたが持っている他のデータを使ってメタデータを入力することができます(exifかもしれません)。function wpse_1595_image_post() { // we need to use the default uploads dir $wp_upload_dir = wp_upload_dir(); // the actual folder $wp_upload_images = $wp_upload_dir['basedir'] . '/images'; require_once(abspath . 'wp-admin/includes/image.php'); foreach (new directoryiterator($wp_upload_images) as $fileinfo) { if($fileinfo->isdot()) continue; $image_base = $fileinfo->getfilename(); $image_name = pathinfo($fileinfo, pathinfo_filename); //customize this post data as you wish $my_post_data = array( 'post_title' => $image_name, 'post_type' => 'post', 'post_category' => array('1'), 'post_author' => 1, 'post_status' => 'publish' ); // we need the id for the attachment $post_id = wp_insert_post($my_post_data); $wp_filetype = wp_check_filetype($image_base, null ); //customize this attachment data as you wish $attachment = array( 'guid' => $wp_upload_dir['url'] . '/' . $image_name, 'post_mime_type' => $wp_filetype['type'], 'post_title' => 'child-' . $image_name, 'post_content' => '', 'post_status' => 'inherit' ); $imagefile = $wp_upload_images . '/' . $image_base; $attach_id = wp_insert_attachment( $attachment, $imagefile, $post_id ); $attach_data = wp_generate_attachment_metadata( $attach_id, $imagefile ); wp_update_attachment_metadata( $attach_id, $attach_data ); } } 数千枚を超える画像の場合は、おそらく使いやすいでしょう。 https://codex.wordpress.org/xml-rpc_wordpress_api https://make.wordpress.org/core/tag/migration-portability/ それが出てきたら 直接dbスクリプト