cloak-labs/wp-bulk-media-importer

从外部URL批量导入图片到WP媒体库。

0.0.1 2024-08-27 17:09 UTC

This package is auto-updated.

Last update: 2024-09-27 17:34:14 UTC


README

这是一个小的PHP/Composer包(旨在由WordPress插件/主题开发者使用),它提供了一个简单的面向对象的API,用于从CSV文件中引用的外部URL批量导入图片。您还可以导入图片的alt文本、标题、描述,并挂钩到上传过程以导入每个图片的其他自定义内容(例如,根据CSV值将每个图片附加到分类法术语)。

大多数批量媒体导入插件似乎仅支持导入帖子/页面/CPT,并且可以选择导入图片/媒体,只要它们附加到正在导入的帖子;而此包只需将图片上传到WP媒体库,无需您将其附加到帖子/页面。

注意:此插件不通过WP管理UI公开任何内容--您必须对PHP有一定了解才能使用它。

安装

使用Composer在项目的根目录中要求此包。

composer require cloak-labs/wp-bulk-media-importer

用法

use CloakWP\BulkMediaImporter;

BulkMediaImporter::make()
  ->fromCsv(get_theme_file_path('/assets/images.csv'))
  ->onUpload(function ($imageId, $imageMeta) {
    /*
      Custom logic to attach each imported image to a term/category from
      the custom taxonomy `category_media`, if a valid term/category
      slug is set in the CSV's `category` column.
     */
    if (BulkMediaImporter::isMetaValid($imageMeta, 'category')) {
      $taxonomy = 'category_media';
      $term = get_term_by('slug', $imageMeta['category'], $taxonomy);
      if (!$term) return false;

      wp_set_object_terms($imageId, $term->term_id, $taxonomy);
    }
  })
  ->run(); // make sure to call `run` to actually run the import

不建议直接在functions.php中包含上述实现,因为您可能会多次运行导入。您可以创建一个WP管理菜单项,在点击时运行导入,或者您可以创建一个自定义WP-CLI命令来运行它,如下所示

// in functions.php
if (defined('WP_CLI') && WP_CLI) {
  WP_CLI::add_command('bulk-media-import', function () {
    BulkMediaImporter::make()
      ->fromCsv(get_theme_file_path('/assets/images.csv'))
      ->onUpload(function ($imageId, $imageMeta) {
        if (BulkMediaImporter::isMetaValid($imageMeta, 'category')) {
          $taxonomy = 'category_media';
          $term = get_term_by('slug', $imageMeta['category'], $taxonomy);
          if (!$term) {
            WP_CLI::warning("Term not found: " . $imageMeta['category']);
            return false;
          }

          wp_set_object_terms($imageId, $term->term_id, $taxonomy);
          WP_CLI::success("Assigned category to image ID: $imageId");
        }
      })
      ->run();
  });
}

注意:

  • CSV预期有一个src列引用外部图片URL
  • CSV还期望alt文本、标题和描述分别在altcaptiondescription列。
  • 任何其他CSV列将作为onUpload方法的第二个参数包含在$imageMeta中,使您能够根据自定义CSV值编写自定义导入逻辑。

未来

此包非常年轻,目前仅支持从引用外部图片URL的CSV导入;但它有意设计(并命名)以支持未来其他类型的批量图片导入场景--请创建一个新的问题,描述您希望导入的场景。