计算或/并仅列出WordPress循环的唯一项

时间:2016-12-02 20:45:55

标签: php wordpress

以下是一个示例循环:

$args = array('s' => 'Example search term', 'cat' => 100, 'posts_per_page' => -1);
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
    while ( $query->have_posts() ) { $query->the_post();
        foreach((get_the_category()) as $category) {
            echo $category->cat_name . '<br />';
        }
    }
}
wp_reset_query();

假设id为#100的类别是多个子类别的父类别,则此循环成功返回大量重复的类别名称列表。

如何仅列出唯一类别名称并计算它们?并将两个值都放入适当的变量中。

除了所有找到的结果及其数量的完整列表之外......

当然,我会一如既往地在等待您的答复时自己找出解决方案。但是,实际上,我会非常感激您的帮助。

1 个答案:

答案 0 :(得分:0)

所以,我会回应自己。再次)

感谢@ Perumal93的提示指导我正确的方法,我现在有了解决方案。

如果它可以像我这样的人使用,这里有注释代码可以复制和粘贴:

$args = array('s' => 'Example search term', 'cat' => 100, 'posts_per_page' => -1);
$query = new WP_Query( $args );

if ( $query->have_posts() ) {
$categories = array(); // 1. Defining the empty array outside of the loop
    while ( $query->have_posts() ) { $query->the_post();
        foreach((get_the_category()) as $category) {
            $categories[] = $category->cat_name; // 2. Filling the array with required data
        }
    }
$u_categories = array_unique($categories); // 3. Clearing the array from repeated data
$u_categories_cnt = count($u_categories); // 4. Counting the cleared array items

foreach( $u_categories as $category ) {                                  // 5. Outputting
    if($category == end($u_categories)) { echo $category.'.'; }          //    the cleared
    elseif($category == prev($u_categories)) { echo $category.' and '; } //    array in a
    else {echo $category.', '; }                                         //    human
}                                                                        //    friendly way

echo $u_categories_cnt; // 6. Outputting the cleared array items count
}
wp_reset_query();

就是这样