Intereting Posts
wp_editor отключается после достижения предела количества символов Фильтровать пользовательский тип сообщения в Admin Могу ли я установить несколько изображений функций на несколько записей из медиа-библиотеки? Форма создания конечного пользователя! Как сохранить пользователя на одной странице в случае ошибки? Все мои сообщения и заголовки страниц на вкладках браузера являются «страницами», Почему эта функция разрушает мою установку WordPress? Как установить различные изображения баннеров с помощью обложки фона на разных контрольных точках? Условный тег шаблона для страниц приятеля Загрузите файлы мультимедиа в Amazon S3 другой класс (css) для виджетов боковой панели WordPress (класс wpdb) и хранимые процедуры mysql Почему изображения / фотографии после загрузки на мой сайт WordPress слегка расплываются? Как узнать, в каком порядке WordPress помещает файлы CSS? Ошибка входа в систему с помощью https Как скопировать базу данных 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 

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

ОК, наконец, я нашел проблему! Я пытался назначить один и тот же пул как для вложения, так и для родительского сообщения, и, очевидно, 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