Моя логика неверна? Попытка получить последнее сообщение WordPress в категории для отображения на странице

Код, над которым я работаю, находится в дочерней теме Twenty Seventeen, в content-front-page.php. Я пытаюсь отобразить определенное изображение самых популярных постов в каждой категории (у меня есть три категории). Показано ниже:

введите описание изображения здесь

Первоначально в каждом цветном блоке. У меня было это в блоке php: <?php

        $recentport = new WP_Query(array('category_name' => 'ports-and-terminals', 'numberposts'=> 1, 'posts_per_page'=> 1));

while($recentport->have_posts()): $recentport->the_post();
$urlp = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' );
?>
<div style="height: 250px; position: relative">
<div style="height:inherit; background: url('<?php echo $urlp;?>'); background-size:cover; "> <!--i-->
<div id="img-overlay" style="height: inherit; background: linear-gradient(#0000ff, #000066); opacity: .7;">
</div>

<span class="feat-title-link">
<a href="<?php the_permalink(); ?>">
<?php the_title_limit(75, '...'); ?>
</a>
</span>

</div>
</div>
<?php
endwhile;
wp_reset_postdata();
?>

Избранные изображения, заполненные вышеуказанным кодом. Если я добавлю новый пост в WordPress и установлю его в категорию с кодом выше, новый пост появится под или над установленной категорией, например:
введите описание изображения здесь

Это не то, что я хочу. Я хочу сохранить макет на 1-й картинке. Итак … Я изменил код в одном цветовом блоке, чтобы проверить: <?php

$args = array('category_name' => 'ebusiness', 'numberposts'=>'1');
$recentcust = wp_get_recent_posts($args);
foreach( $recentcust as $post ){
$linkid = get_permalink($post["ID"]);
$thumb_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumbnail' );
$thumb_url = $thumb_url[0];
echo '<a href="' . $linkid . '">' .$post["post_title"].'</a>';
echo (!empty($thumb_url)) ? $thumb_url : 'No thumb!';
}
wp_reset_query();
//$recentebiz = new WP_Query(array('category_name' => 'ebusiness', 'post_per_page'=>1));

//while($recentebiz->have_posts()): $recentebiz->the_post();
//$url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' );
?>
<div id="recentebiz-tile" style="background: url('<?php echo $thumb_url;?>');">
</div>

Приведенный выше код не заполняет избранные изображения последних сообщений в каждой категории. Отсюда и моя проблема. Вот моя логика:

  1. $ args = array ();: $args переменная содержит параметры для следующей строки.
  2. $ latestcust = wp_get_recent_posts ($ args): $recentcust переменная содержит результаты *wp_get_recent_posts* запрос с моим набором параметров.
  3. foreach ($ latestcust как $ post) {} перебирает результаты и разделяет их на $post.
  4. Внутри foreach(){} цикл: $ linkid = get_permalink ($ post [«ID»]): $linkid это ссылка с идентификатором $ post.
  5. Внутри foreach(){} цикл: $ thumb_url = wp_get_attachment_image_src (
    get_post_thumbnail_id ($ post-> ID), ‘thumbnail’)
    : получает выделенное изображение, связанное с $postудостоверение личности?
  6. Внутри foreach(){} цикл: $ thumb_url = $ thumb_url [0]: получает 1-е изображение (с позицией массива в 0)?
  7. за пределами из foreach(){} цикл: эхо $ Thumb_url [0] для отображения избранного изображения.

Но это не отображается. Я хочу, чтобы показанное изображение отображалось в каждом блоке кода. Я знаю, что я иду по этому сложному пути, но я хочу знать, как работает код и WordPress. Я что-то пропустил? Заранее спасибо.

Ресурсы, которые я использовал, должны придумать этот код:

0

Решение

Я понял это … как-то. Для дальнейшего использования я получил фрагмент кода от Вот. Затем изменил это на это:

<?php
$args = array('category_name' => 'ebusiness', 'numberposts'=>'1');

$posts = get_posts( $args );

foreach($posts as $post) {
$thumbnail_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), array('220','220'), true );
$thumbnail_url = $thumbnail_url[0];
echo ( !empty($thumbnail_url) ) ? $thumbnail_url : 'No thumb!';
}
wp_reset_query();
?>

Затем я использовал другой цикл foreach, чтобы вернуть постоянную ссылку и заголовок сообщения с теми же параметрами args в другом запросе.

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

0

Другие решения

В этом вашем коде

   $recentport = new WP_Query(array('category_name' => 'ports-and-terminals', 'numberposts'=> 1, 'posts_per_page'=> 1));

while($recentport->have_posts()): $recentport->the_post();
$urlp = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' );
?>
<div style="height: 250px; position: relative">
<div style="height:inherit; background: url('<?php echo $urlp;?>'); background-size:cover; "> <!--i-->
<div id="img-overlay" style="height: inherit; background: linear-gradient(#0000ff, #000066); opacity: .7;">
</div>

<span class="feat-title-link">
<a href="<?php the_permalink(); ?>">
<?php the_title_limit(75, '...'); ?>
</a>
</span>

</div>
</div>
<?php
endwhile;
wp_reset_postdata();
?>

Как я вижу, вы получаете ports-and-terminals последний пост затем отображает его в HTML, и цикл while продолжает это делать.

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

0

Вы можете сделать все сразу, как …

<?php
$args = array('category_name' => 'ebusiness', 'numberposts'=>'1');
$posts = get_posts( $args );
foreach($posts as $post) {
$thumbnail_url = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), array('220','220'), true );
?>
<div style="height: 250px; position: relative">
<div style="height:inherit; background: url('<?php echo $thumbnail_url[0];?>'); background-size:cover; "> <!--i-->
<div id="img-overlay" style="height: inherit; background: linear-gradient(#0000ff, #000066); opacity: .7;">
</div>

<span class="feat-title-link">
<a href="<?php get_permalink($post->ID); ?>">
<?php echo wp_trim_words( $post->post_title, 5, '...' );?>
</a>
</span>

</div>
</div>
<?php
}
?>
0
По вопросам рекламы [email protected]