2013-06-04 2 views
0

Сегодня я пытался отобразить наиболее популярный пост в WordPress, используя следующий код:Wordpress получить первый прикрепленное изображение на пост

http://pastebin.com/TjJTiiTZ

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

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

$p = array(
    'post_type' => 'attachment', 
    'post_mime_type' => 'image', 
    'numberposts' => 1, 
    'order' => 'ASC', 
    'orderby' => 'menu_order ID', 
    'post_status' => null, 
    'post_parent' => $post->ID 
); 

$thumb = get_posts($p); 
    if ($thumb) { 
    $imgsrc = wp_get_attachment_image_src($thumb[0]->ID, 'thumbnail'); 
    $img = $imgsrc[0]; 
    } 

Есть ли способ, которым это может быть выполнено?

+0

Попробуйте изменить '$ attachments [0] -> ID' на' $ thumb [0] -> ID' – Rikesh

+0

Что такое содержимое '$ thumb', если вы его отлаживаете? – Sunyatasattva

ответ

0

Вы можете использовать этот код, чтобы получить сообщений первого вложения изображения:

$catposts = get_posts('category='.$category_id."&order=DESC&numberposts=".$NUMBEROFPOSTS); 
function catch_that_image($_catposts) 
{ 
$first_img = ''; 
ob_start(); 
ob_end_clean(); 
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $_catposts->post_content, $matches); 
$first_img = $matches[1][0]; 
return $first_img; 
} 

$j=0; 
foreach ($catposts as $item) : 
    $get_contents = $item->post_content; 
    $regex_pattern = "/<a href=\"(.*)\">(.*)<\/a>/"; 
     $output = preg_match_all($regex_pattern,$item->post_content, $matches); 
    echo '<img src="'.catch_that_image($catposts[$j]).'" alt="" border="0px" />'; 
    $j++; 
endforeach; 

где $ category_id специфичен идентификатор категории. предположим, что если у вас есть категория id = 26, тогда все 26 сообщений категории отображаются в цикле foreach.

на этом связанном сообщении первое изображение, которое вы вводите в сообщениях.

спасибо.

+0

Он отлично работает, однако то, что я пытаюсь выполнить, - это получить сообщение из любого поля в метатете сообщений. Ваш код будет искать только любое изображение, вставленное в сообщение. Мне нужно найти любое изображение, прикрепленное к сообщению (либо в описании, либо в избранном изображении, пользовательских полях и т. Д.). – Gman

Смежные вопросы