Я использую этот код прямо из кодекса .
function echo_first_image ($postID)
{
$args = array(
'numberposts' => 1,
'order'=> 'ASC',
'post_mime_type' => 'image',
'post_parent' => $postID,
'post_status' => null,
'post_type' => 'attachment'
);
$attachments = get_children( $args );
//print_r($attachments);
if ($attachments) {
foreach($attachments as $attachment) {
$image_attributes = wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) ? wp_get_attachment_image_src( $attachment->ID, 'thumbnail' ) : wp_get_attachment_image_src( $attachment->ID, 'full' );
echo '<img src="'.wp_get_attachment_thumb_url( $attachment->ID ).'" class="current">';
}
}
}
Я называю это внутри цикла, как это echo_first_image ($post->ID);
Функция вызывает, но ничего не выводится ... насколько я вижу, ничего нет $attachments
У меня есть изображение в сообщении, которое я использую. Это не рекомендуемое изображение или галерея, просто сообщение.
Я делаю что-то не так, или что-то не так с кодом в первую очередь?
get_childre
, вложение - это дочерняя запись, поэтому этот пример может работать только для вложенного содержимого.Я предлагаю два способа:
Используя плагин
Я хотел бы рассмотреть возможность использования плагина Get The Image , чтобы вы могли сделать что-то вроде:
Выше будет попытаться сделать вещи в следующем порядке:
Создание поддержки в вашей теме
Тем не менее, я использую функцию в плагине, который реализует первые два пункта списка выше.
Вы можете настроить его так, чтобы он соответствовал третьему элементу во фрагменте Дианы:
Просто вставьте эти две функции в ваш
functions.php
файл и используйте их в цикле, например:источник
код кажется совершенно безопасным. Как вы сказали, к сообщению не прикреплено ни одного изображения .
Подумайте о том, чтобы зайти в панель управления мультимедиа и прикрепить изображение к этому сообщению
Также можно удалить содержимое публикации с помощью регулярного выражения для изображений в нем.
источник
Я понимаю, что это очень старый вопрос, но я помещаю свой ответ здесь, так как ответ с наибольшим количеством голосов не подходит для людей, которые плохо знакомы с PHP.
preg_match не очень хороший подход для разбора HTML в PHP, так как preg_match - для регулярных выражений, а HTML - не для регулярных выражений.
Вместо этого мы можем использовать DOM.
Использование DOM действительно хорошо, так как вы можете делать больше, чем просто получать первое изображение, и это правильный способ анализа html.
Я хотел бы поставить ответ для использования WordPress функции (функции из CODEX и Core), чтобы получить первое изображение, но это также проблема, с которой я имею дело.
источник
Этот код работает для меня:
источник