我的逻辑错了吗?试图将Wordpress最近的帖子放在一个类别中以显示到页面

时间:2017-08-10 16:11:33

标签: php arrays wordpress dynamic-featured-image

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

enter image description here

最初,在每个彩色块中。我在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中添加新帖子并将其设置为包含上述代码的类别,则新帖子会显示在设置类别的下方或上方,例如: enter image description here

这不是我想要的。我想在第一张图片中保留布局。所以...我将一个颜色块中的代码更改为此测试:<?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. $ 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-&gt; ID),'thumbnail'):获取与$post ID相关联的精选图片?
  6. foreach(){}循环内: $ thumb_url = $ thumb_url [0] :获取第一张图片(数组位置为0)?
  7. {li> 外部 foreach(){}循环:echo $ thumb_url [0] 以显示精选图片。

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

    我用过的资源是提出这段代码:

1 个答案:

答案 0 :(得分: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循环。