Intereting Posts
WordPress (класс wpdb) и хранимые процедуры mysql Получение выделенного (выделенного) html из Visual Editor на странице «Редактировать страницу»? Загрузка медиа внутри виджета – вкладка «Библиотека мультимедиа» теперь работает Обнаружить, работает ли WP под WP-CLI Несколько архивов для отображения содержимого родительских и подкатегорий Должен ли я изменять эти типы метаданных до создания сложной страницы архива? Как добавить слайды (изображения) в bxslider? Рекомендуемый способ удаления WP REST API возвращаемых данных для пользовательской почты Как использовать do_action () с параметром Несколько символов, заменяемых '=' в почтовом содержимом в wp_mail () Вставить Rich Text Editor в тему? Минимальная загрузка wordpress для работы только `get_option` (потому что ajax …) Как разместить страницы контента get_category_link () ничего не возвращает Получение сведений о загруженном изображении

Получить все идентификаторы изображений из медиа-библиотеки

Я довольно новичок в PHP, и я считаю, что это довольно простой вопрос. Я потратил часы на поиск ответа, но, похоже, все не так хорошо. Поэтому любая помощь будет оценена по достоинству.

Я пытаюсь создать страницу галереи на моем сайте, которая автоматически включает в себя все недавно загруженные изображения. Мой окончательный план – использование Обогащенного Image Grid как менеджера галереи. Для этого нужно поместить идентификатор изображения в короткий код JIG. На моей странице шаблона я хочу 1-го – получить все идентификаторы изображений из медиа-библиотеки. Второй – вызовите короткий код JIG и вставьте идентификаторы в качестве изображений галереи. Оттуда я настрою фильтрацию внутри JIG.

По моему мнению, я не могу получить идентификаторы изображений непосредственно из WordPress. Я должен сначала получить их URL-адреса, а затем извлечь их идентификаторы. Если есть более эффективный способ сделать это, пожалуйста, дайте мне знать.

Пока у меня есть этот код, чтобы получить все URL-адреса изображений (из этой дискуссии: получить все изображения в медиа-галерее? ):

$query_images_args = array( 'post_type' => 'attachment', 'post_mime_type' =>'image', 'post_status' => 'inherit', 'posts_per_page' => -1, ); $query_images = new WP_Query( $query_images_args ); $images = array(); foreach ( $query_images->posts as $image) { $images[]= wp_get_attachment_url( $image->ID ); } 

Это отлично работает при печати массива.

Затем у меня есть этот код, чтобы вернуть идентификатор изображения из URL-адреса (From https://philipnewcomer.net/2012/11/get-the-attachment-id-from-an-image-url-in-wordpress/ ):

 function pn_get_attachment_id_from_url( $attachment_url = '' ) { global $wpdb; $attachment_id = false; // If there is no url, return. if ( '' == $attachment_url ) return; // Get the upload directory paths $upload_dir_paths = wp_upload_dir(); // Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image if ( false !== strpos( $attachment_url, $upload_dir_paths['baseurl'] ) ) { // If this is the URL of an auto-generated thumbnail, get the URL of the original image $attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url ); // Remove the upload path base directory from the attachment URL $attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url ); // Finally, run a custom database query to get the attachment ID from the modified attachment URL $attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) ); } return $attachment_id; } 

Это работает отлично для одного URL-адреса. Что я не могу понять, так это то, как перебирать все URL-адреса, возвращаемые массивом $ images, и возвращать все идентификаторы. Может ли кто-нибудь помочь или показать мне другой способ решить эту проблему?

По моему мнению, я не могу получить идентификаторы изображений непосредственно из WordPress. Я должен сначала получить их URL-адреса, а затем извлечь их идентификаторы. Если есть более эффективный способ сделать это, пожалуйста, дайте мне знать.

Я не уверен, что я последую за тобой, но ты попробовал это:

 $ids = get_posts( array( 'post_type' => 'attachment', 'post_mime_type' => 'image', 'post_status' => 'inherit', 'posts_per_page' => -1, 'fields' => 'ids', ) ); $images = array(); foreach ( $ids as $id ) $images[]= $id; print_r( $images ); 

где $images должны содержать идентификаторы всех изображений.

Например:

 Array ( [0] => 3299 [1] => 3298 [2] => 3297 [3] => 3266 [4] => 3265 [5] => 3260 [6] => 3259 [7] => 3258 [8] => 3257 )