特色帖子代码-重复的特色帖子

时间:2012-04-09 作者:Matthew Snider

我很快就要把它付诸实施了,但我有一个悬而未决的问题。

特色帖子代码在每篇帖子之前/之后不断重复

NEW CODE per CHIP

<?php
// Define featured posts query
$featured_query = new WP_Query( array(
\'posts_per_page\' => 3, 
\'category_name\' => \'featured\'
) );
// Open featured posts loop
if ( $featured_query->have_posts() ) :

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

    // Featured posts loop markup goes here
    ?>
    <div class="featureportfolio<?php echo $i++;?>">

        <a href="<?php the_permalink() ?>" rel="bookmark" class="title">
<?php the_post_thumbnail(\'thumbnail\'); ?></a>


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

// Close featured posts loop
endwhile;
endif;

// Clear/spacer DIV
?>
<div class="clear"></div>
这“有效”减去了现在主页上只显示特色帖子的事实。

3 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

在聊天室讨论并查看父索引后。php文件:

http://pastebin.com/27r0FJ3x

主回路在回路中。php实际上根本不是主循环:

<div id="main" class="<?php echo $containerWidth; ?>" role="main">

            <?php get_template_part(\'breadcrumbs\'); ?>

            <?php if ( have_posts() ) { ?>

                    <?php while ( have_posts() ) { ?>
                            <?php the_post(); ?>
                            <?php get_template_part( \'loop\', get_post_format() ); ?>
                    <?php } // end while ?>

                    <?php get_template_part(\'pagination\'); ?>

            <?php } else { ?>
因此,我建议将特色帖子代码移动到特色帖子中。php,并调整索引。php本身:

<div id="main" class="<?php echo $containerWidth; ?>" role="main">

            <?php get_template_part(\'breadcrumbs\'); ?>
            <?php get_template_part(\'featured\'); ?>

            <?php if ( have_posts() ) { ?>

                    <?php while ( have_posts() ) { ?>
                            <?php the_post(); ?>
                            <?php get_template_part( \'loop\', get_post_format() ); ?>
                    <?php } // end while ?>

                    <?php get_template_part(\'pagination\'); ?>

            <?php } else { ?>
然后调整回路。相应的php

SO网友:Chip Bennett

问题#1

请勿使用query_posts() 创建二次回路;it is intended only for modifying the Primary Loop. 要创建次循环,请使用WP_Query()get_posts():

最好将次要/自定义循环与主查询分开,除非您的目标是修改主要循环。

(如果您需要进一步的指导,请告诉我,我会添加代码示例。我现在看不到您的pastebin内容。)

编辑我看到了几个问题:

你的main loop 内部secondary loop:

   <?php while ($featured_query->have_posts()) : $featured_query->the_post(); ?>
   <?php while (have_posts()) : the_post(); ?>
在打开主循环之前,您需要关闭您的特色帖子循环:

   <?php 
   // Open featured posts loop
   while ($featured_query->have_posts()) : $featured_query->the_post(); 

   // Close featured posts loop
   endwhile;

   // Open main loop
   while (have_posts()) : the_post(); 
   ?>
你有一个extra endif; 循环后:

<?php endwhile;?>
<?php endif; ?>
<div class="clear"></div>
你从不打电话if ( have_posts() )if ( $featured_query->have_posts() ). 我会把你的while 的内部循环if 条件,但这取决于你。但如果你不这样做,那就把endif;

我要给你一块骨头,让你把肉加进去。您的代码应该如下所示:

<?php
// Define featured posts query
$featured_query = new WP_Query( array(
    \'posts_per_page\' => 3, 
    \'category_name\' => \'featured\'
) );
// Open featured posts loop
if ( $featured_query->have_posts() ) :

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

        // Featured posts loop markup goes here
        ?>
        <div class="featureportfolio<?php echo $i++;?>">

            <?php etc... ?>

        </div>
        <?php

// Close featured posts loop
    endwhile;
endif;

// Reset post() data
wp_reset_postdata();

// Clear/spacer DIV
?>
<div class="clear"></div>
<?php

// Open the main loop
if ( have_posts() ) : 

    while ( have_posts() ) : the_post();

        // Main loop markup goes here
        ?>
        <div id="post-<?php the_ID(); ?>" <?php post_class(\'post format-standard\'); ?>>

            <?php etc... ?>

        </div>
        <?php

// Close main loop
    endwhile;
endif;
?>
请注意,无需致电wp_reset_query(), 因为我们没有触及主查询。

SO网友:Michelle

给你:http://pastebin.com/dsZEbC6a

对于#1,我移动了<?php /* Main Loop */ ?> <?php global $framework; ?> 下面的特色帖子位-我认为这将防止特色帖子在循环中的每个常规帖子之前运行。

看起来#2是未关闭的<a> 原始代码第8行的标记。

希望这有帮助,干杯!

结束

相关推荐