TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Как получить идентификатор изображения WordPress по его URL

1 732

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

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

set_post_thumbnail( $postId, $attachmentId );

В WordPress изображение, которое добавляется в медиатеку, называется вложением. Таким образом, чтобы добавить изображение в качестве избранного изображения в сообщение, его нужно сначала добавить в медиатеку, прежде чем мы сможем назначить его для публикации. В этой ситуации я знаю, что все изображения в массиве добавляются в медиа-библиотеку, и нам просто нужно получить идентификатор вложения, чтобы назначить его посту.

Когда изображение добавляется в библиотеку мультимедиа, оно классифицируется как вложение, которое добавляется в таблицу wp_posts с типом сообщения вложения. Это означает, что для получения идентификатора изображения мы можем просто запросить таблицу wp_posts для изображения в столбце guid.

Поскольку нам нужен только столбец идентификатора, мы можем использовать метод get_col, чтобы убедиться, что мы только возвращаем этот идентификатор сообщения.

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

Если мы получим изображение, возвращенное из этой функции, мы можем затем использовать это для добавления избранного изображения в пост, используя функцию set_post_thumbnail ().

// Check the array is populated with featured images if(!empty($featuredImages)) { // Get random picture from remaining images $randomPicture = array_rand($featuredImages, 1); // Get an attachment ID of the featured image $attachmentId = getImageIdByUrl($featuredImages[$randomPicture]); // Check if attachment ID is not false if($attachmentId) { set_post_thumbnail( $post_id, $attachmentId ); } }

Источник записи: https://dzone.com

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