Widgets in the loop if active

时间:2013-08-20 作者:DennisT

我正在尝试将一个小部件作为“第一个帖子”,如果它处于活动状态。。然后让帖子继续。。它可以工作,但第一篇帖子消失了,第二篇帖子成为小部件后的第一行。。看不出我做错了什么。。

正如你所看到的,我已经有一个小部件显示在帖子之间。

<?php if (have_posts()) : ?>
<?php $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; ?>
<?php $i=1;?>
<?php while (have_posts()) : the_post(); ?>          

<?php if ( is_active_sidebar(\'post_widget_area\') && $i==1 ) { ?>

<?php dynamic_sidebar(\'post_widget_area\'); ?>

<? } else { ?> 

    <?php the_title(); ?><br>
    <?php the_excerpt(); ?>

    <?php } if($i==3): ?>
    <?php get_sidebar(\'bottom\'); ?>

    <?php endif; ?>
    <?php $i++; ?>
    <?php endwhile; ?>
    <?php if($i<4): ?>
    <?php get_sidebar(\'bottom\'); ?>

  <?php endif; ?>
<?php endif; ?>

2 个回复
SO网友:s_ha_dum

想想发生了什么。

你跑吧the_post(); 其中设置$post 到循环中的第一个帖子,但如果侧栏处于活动状态,则不使用该帖子。然后循环继续$post 设置为循环中的第二个帖子。你失去了第一个帖子。

我不明白为什么第一个侧边栏需要在循环中。你只需要在have_posts “循环激活”时运行代码的部分。这似乎就是你想要的:

if (have_posts()) { 
  $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1; 
  $i=1;

  if ( is_active_sidebar(\'post_widget_area\') && $i==1 ) { 
    dynamic_sidebar(\'post_widget_area\'); 
  }

  while (have_posts()) { 
    the_post();            
    the_title();
    the_excerpt(); 

    if($i==3) {
      get_sidebar(\'bottom\'); 
    }
    $i++; 
  } 

  if($i<4) {
    get_sidebar(\'bottom\'); 
  } 

}
对不起。我必须将代码编辑成可读的内容,以便告诉大家发生了什么。

虽然我没有在代码中进行此更改,但您不需要$i. $wp_query->current_post 已经有相同的信息01.

SO网友:vancoder

你有一个else 在初始侧栏之后,这样循环的迭代就永远不会显示第一篇文章。

我已经重新格式化了你的代码,以便于阅读。不断打开和关闭php标记是毫无意义的,短标记(<?) 都是魔鬼的杰作WordPress coding standards 应使用。(还有,我讨厌endif 语法,但这只是我)。

未经测试!

<?php
if ( have_posts() ) {
    $paged = (get_query_var( \'paged\' )) ? get_query_var( \'paged\' ) : 1;
    $i = 1;
    while ( have_posts() ) {
        the_post();
        if ( is_active_sidebar( \'post_widget_area\' ) && $i == 1 ) {
            dynamic_sidebar( \'post_widget_area\' );
        }
        the_title();
        echo \'<br />\';
        the_excerpt();
        if ( $i == 3 ) {
            get_sidebar( \'bottom\' );
        }
        $i++;
    }
    if ( $i < 4 ) {
        get_sidebar( \'bottom\' );
    }
}
?>

结束

相关推荐

未确认日期.php模板的自定义发布类型

所以我的问题是这个。我正在建立一个新闻网站,需要在主页上显示当前日期的多个链接列表。为了便于管理,我将不同的部分划分为自定义的帖子类型。当您访问主页时,这很好,因为我正在查询每个帖子类型的当前日期。现在我的问题是,我想使用本机查询变量来表示年、月和日,并显示一个设置类似于主页的页面,但该页面显示从url中设置的日期开始的所有不同帖子类型。例如:http://mysite.com/2013/08/13/我已经在这里问了关于retrieving query vars from the homepage 并被指