在作者模板中排除一类帖子

时间:2014-06-24 作者:Saulius S

我正在使用以下作者存档代码:

<?php
/**
* The template for displaying Author Archive pages.
*
* @package Cryout Creations
* @subpackage Parabola
* @since Parabola 1.0
*/

get_header(); ?>

    <section id="container" class="<?php echo parabola_get_layout_class(); ?>">
        <div id="content" role="main">
        <?php cryout_before_content_hook(); ?>

        <?php if ( have_posts() ) : ?>

            <?php
                /* Queue the first post, that way we know
                 * what author we\'re dealing with (if that is the case).
                 *
                 * We reset this later so we can run the loop
                 * properly with a call to rewind_posts().
                 */
                the_post();
            ?>

            <header class="page-header">
                <h1 class="page-title author"><?php printf( __( \'Author Archives: %s\', \'parabola\' ), \'<span class="vcard"><a class="url fn n" href="\' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . \'" title="\' . esc_attr( get_the_author() ) . \'" rel="me">\' . get_the_author() . \'</a></span>\' ); ?></h1>
            </header>

            <?php
                /* Since we called the_post() above, we need to
                 * rewind the loop back to the beginning that way
                 * we can run the loop properly, in full.
                 */
                rewind_posts();

            // If a user has filled out their description, show a bio on their entries.
            if ( get_the_author_meta( \'description\' ) ) : ?>
            <div id="author-info">
                <div id="author-avatar">
                    <?php echo get_avatar( get_the_author_meta( \'user_email\' ), apply_filters( \'parabola_author_bio_avatar_size\', 60 ) ); ?>
                </div><!-- #author-avatar -->
                <div id="author-description">
                    <h2><?php printf( __( \'About %s\', \'parabola\' ), get_the_author() ); ?></h2>
                    <?php the_author_meta( \'description\' ); ?>
                </div><!-- #author-description  -->
            </div><!-- #entry-author-info -->
            <?php endif; ?>

            <?php /* Start the Loop */ ?>
            <?php while ( have_posts() ) : the_post(); ?>

                <?php
                    /* Include the Post-Format-specific template for the content.
                     * If you want to overload this in a child theme then include a file
                     * called content-___.php (where ___ is the Post Format name) and that will be used instead.
                     */
                    get_template_part( \'content/content\', get_post_format() );
                ?>

            <?php endwhile; ?>

            <?php if($parabola_pagination=="Enable") parabola_pagination(); else parabola_content_nav( \'nav-below\' ); ?>

        <?php else : ?>

            <article id="post-0" class="post no-results not-found">
                <header class="entry-header">
                    <h1 class="entry-title"><?php _e( \'Nothing Found\', \'parabola\' ); ?></h1>
                </header><!-- .entry-header -->

                <div class="entry-content">
                    <p><?php _e( \'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.\', \'parabola\' ); ?></p>
                    <?php get_search_form(); ?>
                </div><!-- .entry-content -->
            </article><!-- #post-0 -->

        <?php endif; ?>

        <?php cryout_after_content_hook(); ?>
        </div><!-- #content -->
    <?php parabola_get_sidebar(); ?>
    </section><!-- #primary -->


<?php get_footer(); ?>
我需要从作者页面中排除一个类别。然而,我不能让它工作。

如果添加

query_posts (query_posts( \'cat=-x\' ); where x is category to skip), 
我总是看到一篇/同一篇不属于所选类别的帖子,而不是循环浏览帖子。

有什么建议,为什么这可能不起作用?

1 个回复
SO网友:Milo

Never use query_posts, 使用pre_get_posts 修改任何主查询。

function wpd_exclude_author_category( $query ) {
    if ( $query->is_author() && $query->is_main_query() ) {
        $query->set( \'category__not_in\', array( 42 ) );
    }
}
add_action( \'pre_get_posts\', \'wpd_exclude_author_category\' );

结束

相关推荐

Sort posts by activity date

我有一个不同日期发布的帖子列表我可以按日期订购邮件$loop_args = array( \'post_type\' => \'post\', \'order_by\' => \'date\', \'order\' => \'ASC\' ) 如果帖子有评论,我如何按评论日期订购帖子。因此,请按活动对帖子进行排序