WordPress получить сообщение thumbnail url

Его простые и ответы довольно часто: я хочу получить переменную миниатюры сообщения. Даже если есть много ввода, я не мог заставить его работать для меня.

Вот мой текущий код, который я использую где-то внутри моего шаблона front_page.php :

 <?php $args = array( 'numberposts' => '2' ); $recent_posts = wp_get_recent_posts( $args ); foreach( $recent_posts as $recent ){ echo '<div class="post">'; echo '<div class="post_thumb" style="background-image:url('.get_the_post_thumbnail( $recent['ID'], 'thumbnail').')"></div>'; echo '<div class="content"'; echo '<h2 class="post_title">'; echo '<a href="'.get_permalink($recent["ID"]).'" title="'.$recent["post_title"].'" >'.$recent["post_title"].'</a>'; echo '</h2>'; echo '<p class="post_excerpt">'.$recent["post_excerpt"].'</p>'; echo '</div>'; //content echo '</div>'; //.post } ?> 

Это работает неплохо, за исключением части get_the_post_thumbnail() .

Я знаю, что могу использовать эскиз эскиза, используя

 $post_thumbnail_id = get_post_thumbnail_id($post->ID); $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id ); 

Но я не могу реализовать этот код внутри своего. Я попытался добавить его внутри foreach и, хотя раньше, но оба не работают. Я не получаю никаких ошибок, которые мог бы найти, он выводит только «ничего», то есть нет style="background-image: url()"; ,

Мне бы очень понравилось, если есть кто-то, кто может не только показать, но и объяснить, почему мой код не работает. Я думаю, что, если бы я решил эту проблему, мой следующий вопрос был бы *, где я должен добавить 'thumbnail' , чтобы вывести правильный размер изображения?

Неисправный код

 <?php $args = array( 'numberposts' => '2' ); $recent_posts = wp_get_recent_posts( $args ); foreach( $recent_posts as $recent ){ $post_thumbnail_id = get_post_thumbnail_id($post->ID); $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id ); echo '<div class="post">'; echo '<div class="post_thumb" style="background-image:url('.$post_thumbnail_url.')"></div>'; echo '<div class="content"'; echo '<h2 class="post_title">'; echo '<a href="'.get_permalink($recent["ID"]).'" title="'.$recent["post_title"].'" >'.$recent["post_title"].'</a>'; echo '</h2>'; echo '<p class="post_excerpt">'.$recent["post_excerpt"].'</p>'; echo '</div>'; //content echo '</div>'; //.post } ?> 

Solutions Collecting From Web of "WordPress получить сообщение thumbnail url"

Первоначально я видел, как все двойные и одинарные кавычки все перепутались. Это фиксировало некоторые из того, что я видел, но я, наконец, успел проверить код, который вы положили.

Первый шаг, я использовал var_dump на $recent_posts чтобы убедиться, что получаю полезные значения.

Затем я повторил каждую переменную, как ее называли, чтобы я знал, что генерируется. Я обнаружил, что эта строка, как сказал @ james-barrett, не называет правильной информации:

 $post_thumbnail_id = get_post_thumbnail_id($post->ID); 

Итак, я использовал предложение @ james-barrett и изменил его на:

 $post_thumbnail_id = get_post_thumbnail_id($recent["ID"]); 

Который затем работал, чтобы получить правильный ID.

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

Я провел некоторое исследование и обнаружил, как файлы были сохранены в папке «uploads», а затем продолжил поиск способа доступа к функции, которая позволила бы мне получить один миниатюрный значок. Решение, которое я нашел, может не работать с другими размерами, или, возможно, после этого вы могли бы сделать больше исследований, но я изменил переменную $post_thumbnail_url на это:

 $post_thumbnail_url = wp_get_attachment_thumb_url( $post_thumbnail_id ); 

Это привело к появлению изображения 150×150.

После того, как все было сказано и сделано, я преобразовал ваш сломанный код выше в этот рабочий код:

 <?php $args = array( 'numberposts' => '2' ); $recent_posts = wp_get_recent_posts( $args ); foreach( $recent_posts as $recent ){ $post_thumbnail_id = get_post_thumbnail_id($recent["ID"]); $post_thumbnail_url = wp_get_attachment_thumb_url( $post_thumbnail_id ); echo '<div class="post">'; echo '<div class="post_thumb" style="background-image:url(\''.$post_thumbnail_url.'\')"></div>'; echo '<div class="content"'; echo '<h2 class="post_title">'; echo '<a href="'.get_permalink($recent["ID"]).'" title="'.$recent["post_title"].'" >'.$recent["post_title"].'</a>'; echo '</h2>'; echo '<p class="post_excerpt">'.$recent["post_excerpt"].'</p>'; echo '</div>'; //content echo '</div>'; //.post } ?> 

Примечание. Я скорректировал url () как url ​​(''), потому что некоторые из моих старых браузеров требуют одинарные кавычки, но я подозреваю, что вы можете их удалить.

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

 $post_thumbnail_id = get_post_thumbnail_id($post->ID); 

Это должен быть идентификатор вашей переменной $recent не $post .

 $post_thumbnail_id = get_post_thumbnail_id($recent->ID); 

или

 $post_thumbnail_id = get_post_thumbnail_id($recent['ID']); 

и для получения определенного размера миниатюры вы можете сделать что-то вроде этого:

 <?php foreach( $recent_posts as $recent ){ $post_thumbnail_id = get_post_thumbnail_id($recent['ID']); $post_thumbnail_url = wp_get_attachment_image_src($post_thumbnail_id, 'thumbnail' ); echo '<div class="post">'; echo '<div class="post_thumb" style="background-image:url('.$post_thumbnail_url.')"></div>'; echo '<div class="content"'; echo '<h2 class="post_title">'; echo '<a href="'.get_permalink($recent["ID"]).'" title="'.$recent["post_title"].'" >'.$recent["post_title"].'</a>'; echo '</h2>'; echo '<p class="post_excerpt">'.$recent["post_excerpt"].'</p>'; echo '</div>'; //content echo '</div>'; //.post } ?>