您最早可以利用什么钩子来检查集合视图的术语/分类?

时间:2015-09-08 作者:Zmart

我试图根据是否get_the_terms( $post->ID, \'product_cat\' ) 里面有“照片”一词。目前我正在使用wp 钩子,但在主查询运行之前,它似乎不会运行。。我需要修改它。

这是必须做的,因为我基本上需要什么,似乎是两个不同的前端商店,但当然,它需要所有在后端吴管理一起。

1 个回复
SO网友:Tim Malone

你会找到法典的Action Reference handy-虽然它没有列出所有内容,但它很好地概述了操作顺序,如果您正在使用的操作运行得太晚,它可以帮助您找到正确的操作。

就你而言,wp 确实会在查询运行后运行,但查看该列表,它会显示出来,具体取决于您想要运行的逻辑pre_get_posts 对你来说是个不错的选择。这实际上是一个常用的操作,它非常强大,允许您在查询运行之前修改查询的几乎所有内容。

没有看到您的代码很难准确预测您希望它执行什么,但我猜您想要的是这样的东西:

add_action( \'pre_get_posts\', \'wpse202063_photographs_term\' );

function wpse202063_photographs_term( $query ){
  if( ! is_admin() && $query->is_main_query() && is_singular( \'product\' ) ){
    $post_object = get_page_by_path( $query->query[\'name\'], \'OBJECT\', \'product\' );
    if( has_term( \'photographs\', \'product_cat\', $post_object ) ){
      // modify the query here as you need, using $query->set()
    }
  }
}
当您查看帖子类型为“product”的单个帖子时,这应该允许您修改$query 反对改变任何你需要的东西1

重要的是要注意,上面的片段只是初步的-这可能不是最快的方法来做你想做的事情;它还假设您正在使用相当长的永久链接。

请注意pre_get_posts 通行证$query by reference, 因此,没有必要全球化$wp_query 要进行更改,您可以直接使用$query->set( \'query_var\', \'value\' ); - 显然,将“query\\u var”替换为要修改的var,将“value”替换为要设置的值(也可以使用数组)

相关推荐

Get_Terms()Order by Term_Meta

我正在做一个get_terms() 我试图按自定义术语元排序的查询。自定义术语元键是\'order\' 它是一个数值(介于1和10之间)。我尝试了以下方法,但顺序似乎没有遵循元值-任何指针都是值得赞赏的。$type_terms = get_terms( \'type\', array( \'hide_empty\' => false, array( \'key\' => \'order\', ), \'or