循环参数中的条件检查

时间:2013-07-21 作者:Mario88

我有几个循环,每个循环都是根据用户的输入(在短代码中)以不同的样式显示特定类别的。现在,我想将这些(或仅其中一个)循环与循环“合并”,以显示最近的帖子,而不考虑类别。

目前这是我的代码(用于显示特定类别的帖子):

$args = array(
  \'category_name\' => $category, 
  \'showposts\' => $numposts, 
  \'order\' => $order
);

$query = new WP_Query( $args );

while ($query->have_posts()) : $query->the_post();
// loop\'s usual stuff
正如我所说,它们在短代码中,所以,$category、$numpost(帖子数量)和$order是用户的输入(短代码的att)

无论如何,要显示最近的帖子,我所要做的就是去掉类别部分。然而,当我从短代码的“侧面”(通过不填充短代码也不显示它)这样做时,循环被打破了。我想这是因为我在查询参数中声明了“category”。

我尝试过:

$args = array(
   if (!empty($category)) {
    \'category_name\' => $category,
  }
  \'showposts\' => $numposts, 
  \'order\' => $order
);
但当然,这是一个错误:P。好吧,我想至少这可以更好地解释我想要实现的目标。

我的问题是:这有什么问题吗?或者我应该构建一个新的短代码/循环,专门用于显示最近的帖子?

提前谢谢。

编辑:

更长的代码:

function boxed_category($atts, $content) {
    extract(shortcode_atts(array(
      "category" => \'\',
      "numposts" => \'-1\',
      "order" => \'ASC\'
    ), $atts));

    $output = \'\';

    $args = array(
      \'category_name\' => $category, 
      \'showposts\' => $numposts, 
      \'order\' => $order
    );

    $query = new WP_Query( $args );

    while ($query->have_posts()) : $query->the_post();
嗯,没有太多区别-函数名,因为它最初是用来显示某个类别的(在“装箱”CSS中)-我想把这个短代码变成一个“最近的帖子”选项。我需要更多的ATT,但首先,需要弄清楚如果用户选择了“最近的帖子”选项,如何从查询中“摆脱”$类别。

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

我会改变的

$args = array(
      \'category_name\' => $category, 
      \'showposts\' => $numposts, 
      \'order\' => $order
    );

$args = array(
      \'showposts\' => $numposts, 
      \'order\' => $order
    );

if ( $category )
     $args[\'category_name\'] = $category;
这样你就不会通过空的category_name 参数作为查询参数。

SO网友:s_ha_dum

。。。如果用户选择了“最近的帖子”选项,需要找出如何从查询中“摆脱”$类别

这几乎不是一个WordPress问题,如果有的话,但不要使用category 如果你没有。

$args = array(
  \'showposts\' => $numposts, 
  \'order\' => $order
);
if (!empty($category)) {
  $args[\'category_name\'] = $category;
}
对于任何其他可选参数也是如此。

结束

相关推荐

For Each +1 Wordpress Loop

我用一个循环来制作一个滑块。我的代码是<?php query_posts( array( \'post_type\' => \'my_gallery\', \'author\'=>$author->ID ) ); while( have_posts() ) : the_post(); $imagethum = eh_postImage(115, 70); ?> <a data-slide-