Intereting Posts
Использовать метаданные для переноса элементов самостоятельно Как получить реальный тип файла для изображений, у которых нет расширения как я могу зарегистрировать пользователя для блога, быть назначен только на этот блог? Обтекание изображений в тегах по размеру Создание бэкэнда Ajax для специализированного шаблона страницы? Следует ли использовать admin-ajax.php? Один сайт, два отдельных раздела: два разных верхних навигационных меню? Отображать различное количество сообщений из одной категории на разных страницах Как создать и заполнить несколькими ссылками меню в дочерней теме functions.php? Как связать тип сообщения с шаблоном в Мастерплане? Поиск между настраиваемыми полями и полями пользовательской таксономии Как отключить самозакрывающиеся теги для разметки в WordPress (например, для HTML5 или HTML4)? Можно ли планировать приложения в WordPress? Настроить имена полей на странице редактирования профиля бэкэнда через функцию.php Рекомендации по регистрации пользователей в WordPress с фона MVC Как создать «виртуальную» страницу в WordPress

Как проверить, существует ли вложение изображения перед загрузкой

Я пытаюсь программно загрузить изображения в WP, если изображение с тем же именем уже существует. Я делаю это изнутри плагина, на панели администратора через add_submenu_page() .

Я использую foreach() для загрузки 2 изображений за сообщение, и я даю им имя, основанное на slug сообщения, но только один из них правильно найден в WP и опущен, другой всегда загружается в WP, даже если это существует.

Вот соответствующий код:

 // sample vars $slug = 'my-post-slug'; $card['img'] = 'http://example.com/img1.jpg'; $card['imgGold'] = 'http://example.com/img2.jpg'; // end sample vars $images = ''; $images[] = $card['img']; $images[] = $card['imgGold']; foreach ( $images as $url ) { // check if current url is for regular or gold image if ( $card['imgGold'] == $url ) { $desc = $slug .'-gold'; } else { $desc = $slug; } // check if attachment already exists $attachment_args = array( 'posts_per_page' => 1, 'post_type' => 'attachment', 'name' => $desc ); $attachment_check = new Wp_Query( $attachment_args ); // if attachment exists, reuse and update data if ( $attachment_check->have_posts() ) { echo 'Attachment <strong>'. $desc .'</strong> found, omitting download...<br>'; // do stuff.. // if attachment doesn't exist fetch it from url and save it } else { echo 'Attachment <strong>'. $desc .'</strong> not found, downloading...<br>'; // handle image upload from url and assign to post $src = media_sideload_image( $url, $post_id, $desc, 'src' ); // add post meta if ( $card['imgGold'] == $url ) { add_post_meta( $post_id, 'imgGold', $src ); } else { add_post_meta( $post_id, 'img', $src ); } } // end attachment exists } // end foreach image 

Золотой образ – тот, который работает по назначению. Регулярный всегда загружается повторно. Не знаю, почему, хотя, любая помощь оценили, спасибо!

Solutions Collecting From Web of "Как проверить, существует ли вложение изображения перед загрузкой"

ОК, наконец, я нашел проблему! Я пытался назначить один и тот же пул как для вложения, так и для родительского сообщения, и, очевидно, WordPress этого не будет. «Имя» в медиа-библиотеке для вложения было правильным, но фактический пул получал -2 в конце.

Вот фиксированный код, просто создав уникальные слайды :

 // sample vars $slug = 'my-post-slug'; $card['img'] = 'http://example.com/img1.jpg'; $card['imgGold'] = 'http://example.com/img2.jpg'; // end sample vars $images = ''; $images[] = $card['img']; $images[] = $card['imgGold']; foreach ( $images as $url ) { // check if current url is for regular or gold image if ( $card['imgGold'] == $url ) { $desc = $slug .'-img-gold'; } else { $desc = $slug .'-img'; } // check if attachment already exists $attachment_args = array( 'posts_per_page' => 1, 'post_type' => 'attachment', 'name' => $desc ); $attachment_check = new Wp_Query( $attachment_args ); // if attachment exists, reuse and update data if ( $attachment_check->have_posts() ) { echo 'Attachment <strong>'. $desc .'</strong> found, omitting download...<br>'; // do stuff.. // if attachment doesn't exist fetch it from url and save it } else { echo 'Attachment <strong>'. $desc .'</strong> not found, downloading...<br>'; // handle image upload from url and assign to post $src = media_sideload_image( $url, $post_id, $desc, 'src' ); // add post meta if ( $card['imgGold'] == $url ) { add_post_meta( $post_id, 'imgGold', $src ); } else { add_post_meta( $post_id, 'img', $src ); } } // end attachment exists } // end foreach image