在引导转盘中显示自定义POST类型和自定义字段

时间:2012-11-09 作者:cindyg

我第一次使用“类型”wordpress插件。我创建了一个自定义帖子类型,以及一些自定义字段。

如何将所有自定义帖子动态调用到引导传送带中,并显示该循环中的字段?

我如何限制将循环通过传送带的帖子数量?另一个要求是,我需要将必要的引导“活动”类仅添加到第一篇文章中。

这是我的第一个镜头,(还请注意,我有一些自定义的js用于为旋转木马创建分页,但这不是一个问题(到目前为止!))

<!-- need to limit the entire carousel to displaying the 5 latest posts -->
    <div id="myCarousel2" class="carousel">
        <div class="carousel-inner2">

            <?php $loop = new WP_Query( array( \'post_type\' => \'testimonial\' ) ); ?>
            <div class="item active" data-title=""><!-- the first div needs a class of active, but the others do not -->
                <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
                    <div class="slide-copy"><?php the_content(); ?></div>
                    <!-- need to display a custom field or two here -->
                <?php endwhile; ?>
          </div>
        </div>
      </div><!-- end myCarousel -->
这是我的第二次尝试。除了显示自定义字段值之外,我的工作非常出色。有什么建议吗?看起来语法是正确的。。。我是不是缺少一些基本的东西?

<?php $the_query = new WP_Query(array(
\'post_type\' => \'testimonial\', 
\'posts_per_page\' => 1 
));
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="item active" data-title="">
    <div class="slide-copy">
        <?php the_content();?>
        <span class="byline"><?php echo get_post_meta($post->ID, \'authorinfo\', true); ?></span>
    </div>
</div>
<?php endwhile; wp_reset_postdata(); ?>
<?php $the_query = new WP_Query(array(
\'post_type\' => \'testimonial\', 
\'posts_per_page\' => 5, 
\'offset\' => 1 
));
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<div class="item" data-title="">
    <div class="slide-copy">
    <?php the_content();?>
    <span class="byline"><?php echo get_post_meta($post->ID, \'authorinfo\', true); ?></span>
    </div>
</div>

4 个回复
SO网友:Alex Lane

我发现像这样的事情,get_posts 更容易。

<?php
    // Set up your arguments array to include your post type,
    // order, posts per page, etc.

    $args = array(
        \'post_type\' => \'testimonial\',
        \'posts_per_page\' => 3,
        \'orderby\' => \'date\',
        \'order\' => \'DESC\'
    );

    // Get the posts
    $testimonials = get_posts($args);

    // Loop through all of the results
    foreach ($testimonials as $testimonial)
    {
        // Since we\'re doing this outside the loop,
        // Build the apply the filters to the post\'s content

        $content = $testimonial->post_content;
        $content = str_replace(\']]>\', \']]&gt;\', $content);
        $content = apply_filters(\'the_content\', $content);

        // Build out the carousel item
?>
        <div class="item-active">
            <?php echo get_post_thumbnail($testimonial->id); ?>
            <div class="carousel-caption">
                <h4><?php echo $testimonial->post_title; ?></h4>
                <?php echo $content; ?>
            </div>
        </div>
<?php
    }
?>
这已经为我工作了很多次,它已经成为我所有旋转木马、jQuery或Twitter引导的go-to方法。

我真的希望这能有所帮助。

Codex Function Reference for get_posts

SO网友:jose pacheco

阅读“codex页面上的多重循环”我想你会在那里找到答案。。。至少我有我的:http://codex.wordpress.org/The_Loop

我确实使用了一个“特色”类别。查询是通过“多个循环在运行”进行的。第一个循环,只有一个带有特色类别的帖子,以激活引导旋转木马类。然后,另一个循环将其他类别排在第一位。

  <div id="myCarousel" class="carousel slide">
  <!-- Carousel items -->
   <div class="carousel-inner">
    <?php 
      $my_query = new WP_Query(\'category_name=featured&posts_per_page=1\');
      while ($my_query->have_posts()) : $my_query->the_post();
      $do_not_duplicate = $post->ID;?>
       <!-- The 1st Loop... -->
       <div class="active item well-blue">
         <div class="offset1">              
         <h3><?php the_title(); ?></h3>
         <p class="lead"><?php $excerpt = strip_tags(get_the_excerpt()); echo $excerpt; ?></p>
         <a href="<?php the_permalink() ?>" class="btn" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">Read more...</a>
       </div> 
     </div>
    <?php endwhile;
      // The 2nd Loop limits the query to 2 more posts...
    $limit_query = new WP_Query(\'posts_per_page=2\');
    if($limit_query->have_posts()) : while ($limit_query->have_posts()) : $limit_query->the_post(); 
    if( $post->ID == $do_not_duplicate ) continue; ?>
    <!-- The 2nd Loop same data as 1st loop -->
    <?php endwhile; endif;  wp_reset_query(); ?>
      </div>
      <!-- Carousel nav -->
      <a class="carousel-control left" href="#myCarousel" data-slide="prev">&lsaquo;</a>
      <a class="carousel-control right" href="#myCarousel" data-slide="next">&rsaquo;</a>
  </div>
希望有帮助。

SO网友:totels

你在问什么还不完全清楚,你可能想在帖子中提出一些实际问题。

我想你想要的是知道如何WP_Query 选择特定数量的帖子,默认情况下,WP\\u查询用于对所有帖子进行分页,但您不必使用分页。但是要告诉WP\\u Query只为“首页”选择N个帖子,可以使用showposts parameter.

对于您可能想要的元值get_post_meta(), 但是如果您希望在WP\\u查询中使用元数据,则需要meta_query.

CSS提供了:first-child 伪选择器,用于覆盖容器中的第一个元素。否则,虽然这可能不是它的位置,但您可以在循环外设置一个count变量,然后执行以下操作if ($count++ == 0) $class = \'active\'; 在…内

SO网友:Justyn Thomas

您需要编写一个条件语句,使活动类在帖子中循环。这是我与自定义帖子类型一起使用的技术。

`

                <!-- Wrapper for slides -->
                <div class="carousel-inner" role="listbox">
                  <?php 

                    if( $query->have_posts() ) : 
                      while( $query->have_posts() ) : 
                        $query->the_post(); 
                        $i++;
                  ?>

                    <div class="item <?php if ( $i == 1 ) {echo \'active\';} ?>">

                      <p><?php the_field(\'testimonial\'); ?></p>
                      <div class="testimonials-image">
                          <img class="img-responsive" src="<?php the_field(\'testimonial_image\'); ?>" alt="">
                      </div>
                      <h5><?php the_field(\'testimonial_name\'); ?></h5>
                      <h6><?php the_field(\'testimonial_occupation\'); ?></h6>

                    </div>

                  <?php 
                    endwhile; 
                      endif; 
                        wp_reset_postdata(); 
                  ?>

                </div>

                <!-- Controls -->
                <a class="left" href="#carousel-example-generic" role="button" data-slide="prev">
                  <i class="fa fa-long-arrow-left" aria-hidden="true"></i>
                  <span class="sr-only">Previous</span>
                </a>
                <a class="right" href="#carousel-example-generic" role="button" data-slide="next">
                  <i class="fa fa-long-arrow-right" aria-hidden="true"></i>
                  <span class="sr-only">Next</span>
                </a>

              </div>
            </div>
        </div>
    </div>
</div>
`

结束

相关推荐