Einzelnen Post aus Kategorie (Portfolio) ausschließen

  • Hallo zusammen,
    ich habe eine Portfolioseite für eine bestimmte Kategorie.
    Ich möchte auf dieser Seite einen bestimmten Post ausschließen.

    So werden in meinem Portfolio-Template die Posts aufgerufen:

    PHP
    <?php if (have_posts()) : ?>
     	  <?php $post = $posts[0]; // Hack. Set $post so that the_date() works. ?> 	  <?php /* If this is a category archive */ if (is_category()) { ?>		<h2 class="pagetitle">Archive for the ‘<?php single_cat_title(); ?>’ Category</h2> 	  <?php /* If this is a tag archive */ } elseif( is_tag() ) { ?>		<h2 class="pagetitle">Posts Tagged ‘<?php single_tag_title(); ?>’</h2> 	  <?php /* If this is a daily archive */ } elseif (is_day()) { ?>		<h2 class="pagetitle">Archive for <?php the_time('F jS, Y'); ?></h2> 	  <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>		<h2 class="pagetitle">Archive for <?php the_time('F, Y'); ?></h2> 	  <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>		<h2 class="pagetitle">Archive for <?php the_time('Y'); ?></h2>	  <?php /* If this is an author archive */ } elseif (is_author()) { ?>		<h2 class="pagetitle">Author Archive</h2> 	  <?php /* If this is a paged archive */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>		<h2 class="pagetitle">Blog Archives</h2> 	  <?php } ?>
    
    
    		<?php while (have_posts()) : the_post(); ?>

    Wo genau und vor allem wie kann ich eintragen, dass Post 5675 von der Anzeige ausgeschlossen werden soll? Ich komm einfach nicht drauf...

    Vielen Dank für Eure Hilfe!

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Danke Dir! Kannst Du mir evtl auch helfen, wie und wo genau ich den Parameter einbauen muss? Ich fabrizier da immer irgendwelche Syntaxfehler (weil ich mich mit php einfach überhaupt nicht auskenn...) danke!

  • Tausche folgende Zeilen aus

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


    gegen

    PHP
    <?php if ( $the_query->have_posts() ) : ?>

    und

    PHP
    <?php while (have_posts()) : the_post(); ?>


    gegen

    PHP
    <?php
    $the_query = new WP_Query( 'post__not_in' => '5675' );
    while ( $the_query->have_posts() ) { $the_query->the_post(); }
    ?>

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Ah, mein Fehler, hatte die falsche Kategorie-Portfolio-Datei am Wickel. Aber wenn ich bei der richtigen diese Änderungen eingebe, kommt ein leerer weißer Bildschirm :-(
    Hier sieht der Code so aus:


    Sorry für die Extrarunde...

  • Ich würde das nicht im Template machen. Dafür gibt es den Hook 'pre_get_posts'. Mein Ansatz wäre eine Funktion in der functions.php nach dem Muster:

    Code
    add_action( 'pre_get_posts', 'mensmaximus_remove_post_from_query' );
    function mensmaximus_remove_post_from_query( $query ) {
    	if ( !is_category( 'deine_portfolio_category' ) || !$query->is_main_query() ) {
    		return;
    	}
    	global $wp_query;
    	$query->set( 'post__not_in', '5675' );
    }

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Danke, mensmaximus,
    das hab ich gleich probiert, mit diesem Code:

    PHP
    add_action( 'pre_get_posts', 'mensmaximus_remove_post_from_query' );
    function mensmaximus_remove_post_from_query( $query ) {
        if ( !is_category( '16' ) || !$query->is_main_query() ) {
            return;
        }
        global $wp_query;
        $query->set( 'post__not_in', '5675' );
    }

    Hab es auch mit dem slug "media" (statt "16") probiert. Will aber leider auch nicht...:-(

  • 'Muster' haben es so an sich, dass man damit spielen muss, weil sie nur einen Lösungsweg aufzeigen. IN Deinem Fall sollte folgendes funktionieren:

    Code
    add_action( 'pre_get_posts', 'mensmaximus_remove_post_from_query' );
    function mensmaximus_remove_post_from_query( $query ) {
    	if ( $query->is_category( '16' ) && $query->is_main_query() ) {
    		$query->set( 'post__not_in', array(5675) );
    	}
    }

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Dann stimmen andere Dinge nicht, wie z.B. die Kategorie oder Post ID. Wenn ich den von mir geposteten Code auf Kategorie 1 und Post_ID 1 ändere wird in einem frisch installierten WordPress der berühmte "Hallo Welt Artikel" ausgefiltert. Der Code ist also richtig. Ich kann mir das gerne einmal ansehen. Bei Interesse einfach PM an mich.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!