繁体   English   中英

从query_posts()中排除WordPress自定义分类术语

[英]Exclude a WordPress custom taxonomy term from query_posts()

我在我的一个存档页面上添加了以下代码,就在循环之前。 我需要这个特定的档案按字母顺序显示,而不是按时间顺序显示。 这可以做它应该做的事情。

global $query_string;
$posts = query_posts($query_string . '&orderby=title&order=asc&posts_per_page=-1');

需要它来排除特定的分类术语。 我的分类法被称为“公司类型”,我希望它排除术语“特色”。 我能够通过添加&company-type=featured来过滤它以仅显示分类术语,但我需要完成相反的操作。

我发现旨在实现此目的的所有内容都使用了非常不同的语法。 我试图将我当前的参数与该语法相匹配,但没有运气,我无法弄清楚它是如何适合这个例子的。 我见过的例子使用了tax_query参数,但我无法使用我的代码。

我知道可能有多种方法可以实现这一点,我已经读过使用query_posts不一定是最好的解决方案,但它是迄今为止我唯一能够完成的工作。 谁能帮我?

好的,我搞定了。 我使用了不同的语法,我曾尝试过几次,但它并没有为我工作,因为我不知道如何用我的$query_string包含原始参数。

有一个名为wp_parse_args的WordPress函数可以让它们以相同的格式存在。 这是我最终得到的代码。 (我也切换到WP_Query而不是query_posts ,现在我明白为什么以前它不适用于我。)

global $query_string;

$args = array( 
  'tax_query' =>  array (
    array(
      'taxonomy' => 'company-type', // My Custom Taxonomy
      'terms' => 'featured', // My Taxonomy Term that I wanted to exclude
      'field' => 'slug', // Whether I am passing term Slug or term ID
      'operator' => 'NOT IN', // Selection operator - use IN to include, NOT IN to exclude
    ),
  ),
  'posts_per_page' => -1,
  'orderby' => 'title',
  'order'=>'ASC'
);

$args = wp_parse_args( $query_string, $args );
$query = new WP_Query( $args );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM