Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Bulk sideload list of media via CSV file.
- *
- * Assumes two columns: title, url
- */
- if (($data = fopen('file-list.csv', 'r')) !== false) {
- $pdfs = [];
- while (($row = fgetcsv($data, 1000, ',')) !== false) {
- $pdf_url = parse_url($row[1]);
- $slug = basename($pdf_url['path']);
- $slug = preg_replace('/\\.[^.\\s]{3,4}$/', '', $slug);
- $title = $row[0];
- if ($title === '') {
- $title = str_replace('_', ' ', $slug);
- $title = str_replace('-', ' ', $title);
- $title = str_replace('%20', ' ', $title);
- $title = str_replace(' ', ' ', $title);
- $title = ucwords($title);
- $title = str_replace('Aci', 'ACI', $title);
- }
- $pdfs[] = [
- 'post_title' => $title,
- 'post_name' => $slug,
- 'external_url' => $row[1],
- ];
- }
- fclose($data);
- }
- // WP_CLI::line(print_r($pdfs));
- if (!empty($pdfs)) {
- $download_errors = [];
- $sideload_errors = [];
- $count = 0;
- foreach ($pdfs as $pdf) {
- $tmp = download_url($pdf['external_url']);
- $file_array = [
- 'name' => basename($pdf['external_url']),
- 'tmp_name' => $tmp,
- ];
- // Log error if download fails.
- if (is_wp_error($tmp)) {
- @unlink($file_array['tmp_name']); // phpcs:ignore
- $download_errors[] = [
- 'file' => $pdf['external_url'],
- 'error' => $tmp->get_error_message(),
- ];
- WP_CLI::line(WP_CLI::colorize('%RDownload error:%n ' . $pdf['external_url']));
- continue;
- }
- // Do the sideload.
- $attachment_id = media_handle_sideload($file_array, null, null, );
- // Log error if sideload fails.
- if (is_wp_error($attachment_id)) {
- @unlink($file_array['tmp_name']); // phpcs:ignore
- $sideload_errors[] = [
- 'file' => $pdf['external_url'],
- 'error' => $attachment_id->get_error_message(),
- ];
- WP_CLI::line(WP_CLI::colorize('%RMedia sideload error:%n ' . $pdf['post_name']));
- continue;
- }
- wp_update_post([
- 'ID' => $attachment_id,
- 'post_title' => $pdf['post_title'],
- 'post_name' => $pdf['post_name'],
- 'post_author' => 1,
- ]);
- $count++;
- WP_CLI::success('Added: ' . $pdf['post_title']);
- }
- WP_CLI::success("Total media added: $count");
- if (!empty($download_errors)) {
- WP_CLI::line(WP_CLI::colorize('%RDownload errors:%n '));
- WP_CLI::line(print_r($download_errors));
- }
- if (!empty($sideload_errors)) {
- WP_CLI::line(WP_CLI::colorize('%RSideload errors:%n '));
- WP_CLI::line(print_r($sideload_errors));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement