Код, над которым я работаю, находится в дочерней теме 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>
Приведенный выше код не заполняет избранные изображения последних сообщений в каждой категории. Отсюда и моя проблема. Вот моя логика:
$args
переменная содержит параметры для следующей строки.$recentcust
переменная содержит результаты *wp_get_recent_posts*
запрос с моим набором параметров.$post.
foreach(){}
цикл: $ linkid = get_permalink ($ post [«ID»]): $linkid
это ссылка с идентификатором $ post. foreach(){}
цикл: $ thumb_url = wp_get_attachment_image_src ($post
удостоверение личности?foreach(){}
цикл: $ thumb_url = $ thumb_url [0]: получает 1-е изображение (с позицией массива в 0)?foreach(){}
цикл: эхо $ Thumb_url [0] для отображения избранного изображения.Но это не отображается. Я хочу, чтобы показанное изображение отображалось в каждом блоке кода. Я знаю, что я иду по этому сложному пути, но я хочу знать, как работает код и WordPress. Я что-то пропустил? Заранее спасибо.
Ресурсы, которые я использовал, должны придумать этот код:
Я понял это … как-то. Для дальнейшего использования я получил фрагмент кода от Вот. Затем изменил это на это:
<?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 в другом запросе.
Я просто хотел получить помощь в понимании функций, связанных с возвращением изображений. Я знаю, что есть лучший способ сделать это. Просто нужна помощь, чтобы понять это сейчас.
В этом вашем коде
$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
Цикл после получения недавнего сообщения сразу.
Вы можете сделать все сразу, как …
<?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
}
?>