wake-up-neo.net

Kategorie auf der Blog-Listenseite ausschließen

Ich habe eine Website mit einer News-Seite (Archiv für die Kategorie "News") und einer separaten Blog-Seite. Wenn ich einen Beitrag für die News-Seite verfasse, wähle ich die Kategorie "News". Auf der News-Seite sehen Sie nur die Beiträge, die als News markiert sind. Auf der Blog-Seite sehen Sie jedoch alle Beiträge. Am liebsten würde ich alle Posts anzeigen, AUSSER die 'News'-Posts auf der Blog-Seite. Wie mache ich das?

<!--post start-->
            <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
                    <!--post start-->
                    <div class="post">
                        <div class="box">
                            <div class="postimgbox">
                                <?php if ((function_exists('has_post_thumbnail')) && (has_post_thumbnail())) { ?>
                                    <?php the_post_thumbnail(); ?>
                                <?php } else {

                                }
                                ?>
                            </div>
                            <ul class="post_meta">
                                <li class="post_date">&nbsp;&nbsp;<?php echo get_the_time('M, d, Y') ?></li>
                                <li class="post_comment">&nbsp;&nbsp;
                                <?php comments_popup_link('No Comments.', '1 Comment.', '% Comments.'); ?>
                                </li>
                                <br />
                                <li class="posted_by">&nbsp;&nbsp;
                                <?php the_author_posts_link(); ?>
                                </li>
                                <br />
                                <li class="post_category">&nbsp;&nbsp;
                                <?php the_category(', '); ?>
                                </li>
                                <br />
                            </ul>
                        </div>
                        <div class="post_content">
                            <h1 class="post_title"><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
                            <?php the_title(); ?>
                                </a></h1>
                    <?php the_excerpt(); ?>
                            <a class="read_more" href="<?php the_permalink() ?>"><?php _e('Read More', 'infoway'); ?>&nbsp;<span class="button-tip"></span></a> </div>
                    </div>
                    <!--End Post-->

Oben ist der Code aus blog.php, die PHP-Datei, die ich zu bearbeiten versuche, da sie die Vorlage für meine Blog-Seite ist (falls es hilft).

2
Omar

Aus einem Plugin oder der functions.php -Datei Ihres Themas:

function wpse106861_mod_query( $query ) {
    /* are we on the blog page ? */
    if ( $query->is_home() && $query->is_main_query() ) {
        /* get ID of news category */
        $news_id = get_cat_ID( 'news' );
        /* exclude posts in new from query */
        $query->set( 'category__not_in' => array( $news_id ) );
    }
}
add_action( 'pre_get_posts', 'wpse106861_mod_query' );

Update
Zum Kommentar: is_home sollte auf jeder Blog-Indexseite true zurückgeben, unabhängig davon, ob es sich um eine statische Seite oder Ihre Startseite handelt. Sie können auch direkt nach der Titelseite suchen, indem Sie die Bedingung leicht ändern:

if ( $query->is_front_page() && $query->is_main_query() )

Verwandte Lesung

4
Johannes Pille

Sie können dies mit pre_get_posts filter tun. Mach es so:

function my_exclude_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'category__not_in', array( 1, 1347 ) );  // where 1 and 1347 are IDs of excluded categories
    }
}
add_action( 'pre_get_posts', 'my_exclude_category' );

PS. Ich gehe davon aus, dass diese Blog-Seite als Ihre Posts-Seite festgelegt ist.

3