Stuck in the query loop

时间:2015-01-06 作者:Amir

我在WordPress页面中创建了一个双循环。

它应获取类别名称,并应加载类别名称下的所有子级。

像这样

____Cat1类______

产品1产品2产品3

____Cat2类______

产品1产品2产品3

所以问题是,当产品在循环时,类别名称也在循环,所以如果我有3个产品在cat名称下,我也会有3个cat名称。

这是我的代码:

<div class="pr_grid_cell clearfix">
<?php
//for each category, show posts
$categories=get_categories();
  foreach($categories as $cat) {
    $args=array(
      \'post_type\' => \'products\',
      \'showposts\' => -1,
      \'category__in\' => array($cat->term_id)
    );
    $posts=get_posts($args);
      if ($posts) { ?>
        <div class="pr_grid buy-online">
            <span class="hcenter">
            <h5><?= $cat->name ?></h5>
         <? foreach($posts as $post) {
          setup_postdata($post); ?>
            <? if( get_field(\'buy_online_href\') ): ?>
                        <?php // create our link now that the post is setup ?>
                        <span class="pr_img_href" href="<? the_permalink(); ?>">
                            <img class="ii" src="<?php the_field(\'product_thumbnail\'); ?>">
                            <a class="button" target="_blank" href="<?php the_field(\'buy_online_href\'); ?>">Buy Online</a>
                            <a class="button" target="_blank" href="/store-locator">Find Near you</a>
                        </span>
            <? endif ?>          
            <?php
        } // foreach($posts
      } // if ($posts
    } // foreach($categories
?>
            </span>
        </div> 
</div>
你们能查一下我的代码并纠正我吗?

任何帮助都将不胜感激。

1 个回复
SO网友:Hybrid Web Dev

<div class="pr_grid_cell clearfix">
<?php
//for each category, show posts
$categories=get_categories();
foreach($categories as $cat) {
$args=array(
  \'post_type\' => \'products\',
  \'showposts\' => -1,
  \'category__in\' => array($cat->term_id)
);
$posts = new wp_query($args); // This is the best way to 
  if ($posts->have_posts()) while ($posts->have_posts()) { //condional if/while 2-in-1. If you dont check have_posts, you\'ll get an ugly error when nothings found. 
    the_post();//increments wps internal counter, Needed so that your loop doesnt run forever. 
    ?>

    <div class="pr_grid buy-online">
        <span class="hcenter">
        <h5><?= $cat->name ?></h5>
     <? foreach($posts as $post) {
      setup_postdata($post); ?>
        <? if( get_field(\'buy_online_href\') ): ?>
                    <?php // create our link now that the post is setup ?>
                    <span class="pr_img_href" href="<? the_permalink(); ?>">
                        <img class="ii" src="<?php the_field(\'product_thumbnail\'); ?>">
                        <a class="button" target="_blank" href="<?php the_field(\'buy_online_href\'); ?>">Buy Online</a>
                        <a class="button" target="_blank" href="/store-locator">Find Near you</a>
                    </span>
        <? endif ?>          
        <?php
    } // foreach($posts
  } // if ($posts
} // foreach($categories
?>
        </span>
    </div> 
</div>
如上所述,避免使用query\\u帖子。在几乎所有情况下,只实例化自己的wp\\u查询实例更为简洁。我认为缺少一件事,这就是为什么它会无限运行,那就是缺少了\\u post()。这会增加“计数器”,告诉循环何时完成。没有它,它将无限期地运行。

结束

相关推荐

你能不能不付费地编辑你的WordPress的Html和PHP?

对不起,我问了你一个问题。我是WP的新手。我不知道在哪里可以编辑我博客的HTML和PHP。我看到很多GUI选项可以更改颜色等,但没有任何东西可以更改我博客的源代码。我错过了什么?我花了12美元才有了一个自定义url,但编辑我博客的源代码需要花更多的钱吗?如果是这样的话,考虑到Tumblr免费提供这两种功能(自定义url、源代码编辑),这似乎很奇怪。

Stuck in the query loop - 小码农CODE - 行之有效找到问题解决它

Stuck in the query loop

时间:2015-01-06 作者:Amir

我在WordPress页面中创建了一个双循环。

它应获取类别名称,并应加载类别名称下的所有子级。

像这样

____Cat1类______

产品1产品2产品3

____Cat2类______

产品1产品2产品3

所以问题是,当产品在循环时,类别名称也在循环,所以如果我有3个产品在cat名称下,我也会有3个cat名称。

这是我的代码:

<div class="pr_grid_cell clearfix">
<?php
//for each category, show posts
$categories=get_categories();
  foreach($categories as $cat) {
    $args=array(
      \'post_type\' => \'products\',
      \'showposts\' => -1,
      \'category__in\' => array($cat->term_id)
    );
    $posts=get_posts($args);
      if ($posts) { ?>
        <div class="pr_grid buy-online">
            <span class="hcenter">
            <h5><?= $cat->name ?></h5>
         <? foreach($posts as $post) {
          setup_postdata($post); ?>
            <? if( get_field(\'buy_online_href\') ): ?>
                        <?php // create our link now that the post is setup ?>
                        <span class="pr_img_href" href="<? the_permalink(); ?>">
                            <img class="ii" src="<?php the_field(\'product_thumbnail\'); ?>">
                            <a class="button" target="_blank" href="<?php the_field(\'buy_online_href\'); ?>">Buy Online</a>
                            <a class="button" target="_blank" href="/store-locator">Find Near you</a>
                        </span>
            <? endif ?>          
            <?php
        } // foreach($posts
      } // if ($posts
    } // foreach($categories
?>
            </span>
        </div> 
</div>
你们能查一下我的代码并纠正我吗?

任何帮助都将不胜感激。

1 个回复
SO网友:Hybrid Web Dev

<div class="pr_grid_cell clearfix">
<?php
//for each category, show posts
$categories=get_categories();
foreach($categories as $cat) {
$args=array(
  \'post_type\' => \'products\',
  \'showposts\' => -1,
  \'category__in\' => array($cat->term_id)
);
$posts = new wp_query($args); // This is the best way to 
  if ($posts->have_posts()) while ($posts->have_posts()) { //condional if/while 2-in-1. If you dont check have_posts, you\'ll get an ugly error when nothings found. 
    the_post();//increments wps internal counter, Needed so that your loop doesnt run forever. 
    ?>

    <div class="pr_grid buy-online">
        <span class="hcenter">
        <h5><?= $cat->name ?></h5>
     <? foreach($posts as $post) {
      setup_postdata($post); ?>
        <? if( get_field(\'buy_online_href\') ): ?>
                    <?php // create our link now that the post is setup ?>
                    <span class="pr_img_href" href="<? the_permalink(); ?>">
                        <img class="ii" src="<?php the_field(\'product_thumbnail\'); ?>">
                        <a class="button" target="_blank" href="<?php the_field(\'buy_online_href\'); ?>">Buy Online</a>
                        <a class="button" target="_blank" href="/store-locator">Find Near you</a>
                    </span>
        <? endif ?>          
        <?php
    } // foreach($posts
  } // if ($posts
} // foreach($categories
?>
        </span>
    </div> 
</div>
如上所述,避免使用query\\u帖子。在几乎所有情况下,只实例化自己的wp\\u查询实例更为简洁。我认为缺少一件事,这就是为什么它会无限运行,那就是缺少了\\u post()。这会增加“计数器”,告诉循环何时完成。没有它,它将无限期地运行。

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请