排除只有粘性帖子的类别或计算特定类别的粘性帖子

时间:2019-07-04 作者:allenstein

我想创建一个页面,显示所有类别的帖子。我的目标是排除只有粘性帖子的类别。这是目前为止还不起作用的部分。

我当前的结果如下所示:

category 1 <1号岗位
2号岗位

category 2
第3后
第4后

category 3

category 4 <6号岗位
7号岗位

。。。因此,在本例中,wp\\u查询忽略了“category 3”的粘性帖子,但仍然显示该类别,因为它有一个隐藏的粘性帖子。在本例中,“类别3”应消失。

$categories = get_categories( array(
                \'orderby\' => \'name\',
                \'order\'   => \'ASC\',
                \'parent\'  => 0,
                \'hide_empty\'       => 1,
            ) );

foreach ( $categories as $category ) {
    printf( \'<a href="%1$s">%2$s</a><br />\',
        esc_url( get_category_link( $category->term_id ) ),
        esc_html( $category->name )
    );

    // COUNT TO TEST IT:
    echo "Posts: " . $category->category_count . " | " ;
    echo "Sticky Posts:" . count(get_option(\'sticky_posts\')) . "<br>";

    $cat_args = array (
        \'category_name\'     => $category->name,
        \'posts_per_page\'    => 10,
        \'ignore_sticky_posts\' => 0,
        \'post__not_in\' => get_option(\'sticky_posts\')
    );

    $cat_query = new WP_Query( $cat_args );
    if ( $cat_query->have_posts() ) : while ( $cat_query->have_posts() ) : $cat_query->the_post();

    the_title(); ?><br><?php

    endwhile; endif;
    wp_reset_query();
如何解决此问题?可能正在统计某个特定类别的sticky\\u帖子?我不知道该怎么说。。。

还是有其他解决方案?

1 个回复
SO网友:allenstein

我通过重新连接foreach和WP\\u查询结构找到了一个解决方案:


$categories = get_categories( array(
    \'orderby\'     => \'name\',
    \'order\'       => \'ASC\',
    \'parent\'      => 0,
    \'hide_empty\'  => 1,
) );

foreach ( $categories as $category ) {

    $cat_args = array (
        \'category_name\'     => $category->name,
        \'posts_per_page\'    => 10,
        \'ignore_sticky_posts\' => 0,
        \'post__not_in\' => get_option(\'sticky_posts\'),
        \'orderby\' => \'name\',
        \'order\'   => \'ASC\',
        \'parent\'  => 0,
        \'hide_empty\'       => 1,
    );

    $cat_query = new WP_Query( $cat_args );

    // The Loop
    if ( $cat_query->have_posts() ) :

        printf( \'<br/><a href="%1$s">%2$s</a><br/>\',
            esc_url( get_category_link( $category->term_id ) ),
            esc_html( $category->name )
        );

        while ( $cat_query->have_posts() ) : $cat_query->the_post();

            the_title();
            ?><br/><?php

    endwhile; endif;

}