获取包含特定代码

时间:2016-04-29 15:01:16

标签: wordpress

我们有10个类别,比如A,B,C,D等

我们有1个标签,比如tag

函数get_categories将获取其中包含帖子的所有类别(默认情况下),但我们需要的是相同的功能,只需要获取包含具有特定标记的帖子的类别。

因此,类别A有5个标记为tag的帖子,类别B没有,类别C有3.然后我想看A和此列表中C

是否可以按标记过滤get_categories

更新1

尝试

$terms = get_terms( array(
            'taxonomy' => 'category',
            'hide_empty' => true,
            'meta_query' => array(
                array(
                    'key'     => 'tag',
                    'value'   => 'my-tag-slug',
                    'compare' => '=',
                ),
            ),
        ) );

还尝试使用标签ID。这是我正在使用的标准帖子类别和标签。

1 个答案:

答案 0 :(得分:1)

请改用get_terms()并使用您可以使用的meta_query参数:https://developer.wordpress.org/reference/functions/get_terms/

类似的东西:

$terms = get_terms( array(
    'taxonomy' => 'category',
    'hide_empty' => true,
    'meta_query' => array(
        array(
            'key'     => 'tag',
            'value'   => 'tag',
            'compare' => '=',
        ),
    ),
) );

根据您使用的WordPress版本,这会有所不同 - 请查看文档。

关于参数的'meta_query'部分,请查看https://codex.wordpress.org/Class_Reference/WP_Query以获取更多信息。

<强>更新

尝试这样的事情(注意将{tag-slug}更改为所需的标签slug

// Get the categories
$terms = get_terms( array(
    'taxonomy' => 'category',
) );

// Loop through them
foreach($terms as $term) {
  // Get the posts in that category with the required tag
  $args = array(
    'category_name'    => $term->name,
    'tax_query'      => array(
        array(
            'taxonomy'  => 'post_tag',
            'field'     => 'slug',
            'terms'     => '{tag-slug}'
        )
    )
  );
  $posts_array = get_posts( $args );

  foreach ($posts_array as $value) {
    // save what you need here - maybe an array for each category with the posts so you can run a count on them?
  }

}