从wp_count_posts()中排除类别

时间:2015-01-30 18:47:55

标签: php wordpress categories wp-query

我正在尝试从wp_count_posts()中排除某个类别。我发现了数百个帖子,解释了如何针对特定帖子类型执行WP_Query并获取类别,然后排除具有特定术语或标签的帖子。

但是,如何从特定的帖子类型中排除几个类别并不是非常公开。一旦我这样做,我还需要返回一个帖子计数

请参阅下面我正在使用的内容。寻找一种替代方法来做我下面的事情,这将允许我排除3个特定类别。

<?php
$count_posts = wp_count_posts('sponsors');
$published_posts = $count_posts->publish;
$count = $published_posts/7;
                    $args = array(
                        'posts_per_page' => -1,
                        'post_type' => 'sponsors'
                        );
                        query_posts($args);
                ?>
                <?php if( have_posts() ) :  $i = 0; $f =7; $countr=0; $z = 0;?>
                <div class="gallery-sponsors">
                    <strong class="title">Special Thanks To Our Sponsors</strong>
                    <div class="mask">
                        <div class="slideset">
                            <?php for ($k = 1; $k <= $count; $k++):
                            $countr = $countr+$f;?>
                                <?php if ($k==1):?>
                                <?php else:?>
                                    <?php $i = $i+$f;?>
                                <?php endif;?>
                            <div class="slide">
                                <ul class="sponsors-list">
                                    <?php $z=0;?>
                                <?php while (have_posts()) : the_post(); ?>
                                    <?php $z++; if ($z<=$countr and $z>$i): ?>
                                        <li>
                                            <div class="img-hold">
                                                <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( 'sponsors-gallery-home' ); ?><?php echo $z;?></a>
                                            </div>
                                        </li>

                                    <?php endif;?>
                                <?php endwhile; ?>
                                </ul>
                            </div>
                            <?php endfor;?>
                        </div>
                    </div>

                    <nav class="pagination"><?php $k =0;?>
                        <ul>
                            <?php while ($q<$count-1): $q++;?>
                                <?php if ($q==1):?>
                                    <li class="active"><a href="#"><?php echo $q;?></a></li>
                                <?php else:?>
                                    <li><a href="#"><?php echo $q;?></a></li>
                                <?php endif;?>  
                            <?php endwhile;?>
                        </ul>
                    </nav>
                </div>
                <?php endif;?>
                <?php wp_reset_query(); ?>

1 个答案:

答案 0 :(得分:0)

这是解决方法。我不得不将以下内容添加到$ args。

'cat' => '-71,-72,-73'

非常简单,但这些关于如何使用wp_count_posts()执行此操作的文档很少。这是我的完整解决方案。

<?php
$count_posts = wp_count_posts('sponsors');
$published_posts = $count_posts->publish;
$count = $published_posts/7;
$args = array(
    'posts_per_page' => -1,
    'post_type' => 'sponsors',
    'cat' => '-71,-72,-73'
    );
    query_posts($args);
?>