显示特定CPT的所有图像

时间:2014-06-04 作者:alexwc_

我有一个“乐队成员”的CPT,我想在模板的顶部列出所有成员,尤其是所有帖子(只是特色图片)——这是一种对所有成员的导航。我想不出怎么做。。。有两个回路吗?任何帮助都将不胜感激!

<div id="main">
<?php


$args=array(
  \'post_type\' => \'band_member\',
  \'post_status\' => \'publish\',
  \'posts_per_page\' => -1,
  \'caller_get_posts\'=> 1 // WHAT IS THIS??
  );

$my_query = null;
$my_query = new WP_Query($args);
echo \'<div class="post-nav">\'; 
if( $my_query->have_posts() ) {

  while ($my_query->have_posts()) : $my_query->the_post();

  ?>


<a href="<?php the_permalink() ?>" rel="bookmark" ><?php the_title(); ?></a>


<?php
  endwhile;
}
echo \'</div><!-- end post nav -->\';

wp_reset_query();  // Restore global post data stomped by the_post().

?>

<?php
// PUT ALL CPT FEATURED IMAGES HERE...
?>
</div><!-- /main -->
原始代码结束。。。。。

带帮助的新代码。。。。。

<section id="main"> 
<?php
$args=array(
  \'post_type\' => \'band_member\',
  \'post_status\' => \'publish\',
  \'posts_per_page\' => -1,
  );

$my_query = null;
$my_query = new WP_Query($args);
echo \'<div class="post-nav">\'; 
if( $my_query->have_posts() ) {

  while ($my_query->have_posts()) : $my_query->the_post();

  ?>
    <a href="<?php the_permalink() ?>" rel="bookmark" ><?php the_title(); ?></a> 
    <?php
  endwhile;
}
echo \'</div><!-- end post nav -->\';

wp_reset_query();  // Restore global post data stomped by the_post().

?>
<?php

$args=array(
    \'post_type\' => \'band_member\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
  );

  $my_query = null;
  $my_query = new WP_Query($args);

       if( $my_query->have_posts() ) {

       while ($my_query->have_posts()) :  $my_query->the_post();
       ?>
    <a href="<?php the_permalink() ?>" rel="bookmark" ><?php the_post_thumbnail(); ?></a> 
<?php
     endwhile;
  }

  wp_reset_query();  // Restore global post data stomped by the_post().

?>
            </section><!-- /#main -->

2 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

你在这里走得对,但有点颠簸

首先,caller_get_posts 已折旧,已替换为ignore_sticky_posts

其次,你应该使用wp_reset_postdatawp_reset_query. 后者与连用query_posts 绝对不能使用。

第三,对图像的调用应该在循环内部,而不是外部。

好的,已经清除了,如果在第一次查询之后需要其他帖子,您应该在这里运行两个循环。你应该看看WP_Query 运行多个循环时。但这一切都取决于你需要实现什么。只需注意,多循环上的codex页面使用query_posts 您不得使用。坚持WP_Query

要返回到上面的循环,应该如下所示

$args=array(
    \'post_type\' => \'band_member\',
    \'post_status\' => \'publish\',
    \'posts_per_page\' => -1,
    \'ignore_sticky_posts\'=> 1 
  );

  $my_query = null;
  $my_query = new WP_Query($args);

       if( $my_query->have_posts() ) {

       while ($my_query->have_posts()) :  $my_query->the_post();

      <-----get your images----->

 <?php
     endwhile;
  }

  wp_reset_query();  // Restore global post data stomped by the_post().

EDIT

因为你是个新手,这里有一个很好的建议。当您开发一个主题/插件时,或者只是简单地向主题添加代码时,请始终在wp config中将debug设置为true。php。如果有任何错误,这会立即将错误打印到屏幕上。请记住,在实时站点上永远不要将debug设置为true。完成后立即设置为false。

进一步阅读:Debugging Wordpress

EDIT 2

看看您现在发布的代码,您可以在一个循环中完成。您应该使用rewind_posts() 在这里

<?php
$args=array(
  \'post_type\' => \'band_member\',
  \'post_status\' => \'publish\',
  \'posts_per_page\' => -1,
  );

$my_query = null;
$my_query = new WP_Query($args);
echo \'<div class="post-nav">\'; 
if( $my_query->have_posts() ) {

  while ($my_query->have_posts()) : $my_query->the_post();

  ?>
    <a href="<?php the_permalink() ?>"rel="bookmark" ><?php the_title(); ?></a> 
    <?php
  endwhile;
}
echo \'</div><!-- end post nav -->\';

 $my_query->rewind_posts();

       while ($my_query->have_posts()) :  $my_query->the_post();

  ?> 

    <a href="<?php the_permalink() ?>"rel="bookmark" ><?php the_post_thumbnail(); ?></a> 
   <?php
     endwhile;

?>

SO网友:IntensiveWordpress

要避免使用wp\\u reset\\u query。。。

    $args = array(
            \'post_type\' => \'band_member\',
            \'post_status\' => \'publish\',
            \'posts_per_page\' => -1
    );
    $show_band_members = get_posts( $args );
    if ($show_band_members) {
     echo \'<div class="post-nav">\'; 

       foreach ($show_band_members as $post) {
         setup_postdata( $post );
         ?>
         <a href="<?php the_permalink() ?>" rel="bookmark" ><?php the_title(); ?></a>
         <?php
    }
}
echo "</div>";
get\\U POST的所有参数说明如下:

http://codex.wordpress.org/Class_Reference/WP_Query

结束

相关推荐

Vimeo Froogaloop API,在小提琴中工作,但不能在WP中工作

我试图利用Vimeo的Froogaloop API,在用户单击某个元素时暂停视频嵌入。我让它在my Fiddle 但它在我的Wordpress环境中不起作用。我从this thread 创建我正在处理的网站的简化版本;HTML<div id=\"player1\" class=\"col\"> <div class=\"vid\"> <iframe src=\"//player.vimeo.com/video/75817361?titl