0

我正在处理的代码位于 content-front-page.php 上的 27 岁儿童主题中。我试图让每个类别(我有三个类别)中最新帖子的特色图片以某种方式显示。如下图所示:

在此处输入图像描述

最初,在每个彩色块中。我在一个 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 中添加新帖子并将其设置为使用上述代码的类别,则新帖子将出现在设置类别的下方或上方,例如: 在此处输入图像描述

那不是我想要的。我想保留第一张图片中的布局。所以......我将一个颜色块中的代码更改为这个来测试:<?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 = 数组();:$args变量保存下一行的参数。
  2. $recentcust = wp_get_recent_posts($args)$recentcust变量保存*wp_get_recent_posts*使用我的参数集的查询结果。
  3. foreach( $recentcust as $post ){}循环遍历结果并将它们分成$post.
  4. foreach(){}循环内部:$linkid = get_permalink($post["ID"]) :$linkid是带有 $post ID 的链接。
  5. foreach(){}循环内部:$thumb_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'thumbnail' )$post :获取与's ID关联的特色图像?
  6. foreach(){}循环内部:$thumb_url = $thumb_url[0]:获取第一张图片(数组位置为 0)?
  7. 循环之外foreach(){}: echo $thumb_url[0]显示特色图像。

但它没有显示它。我希望特色图像显示在每个代码块中。我知道我正在努力解决这个问题,但我想知道代码和 Wordpress 是如何工作的。我错过了什么吗?提前致谢。

我使用的资源是提供以下代码:

4

3 回答 3

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
}
?>
于 2017-08-11T20:13:56.253 回答
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 参数的永久链接和帖子标题。

我只是想在理解带回图片所涉及的功能方面获得帮助。我知道有更好的方法来做到这一点。现在只需要帮助解决这个问题。

于 2017-08-11T13:32:10.540 回答
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在收到最近的帖子后立即关闭循环。

于 2017-08-11T19:11:04.073 回答