webentwicklung-frage-antwort-db.com.de

Schließen Sie bestimmte Kategorien von den neuesten Updates aus

Ich erstelle eine Website. Es gibt eine Spalte für die neuesten Updates. Dies ist der Code, den ich jetzt habe. Ich bin nicht wirklich gut in PHP-Codierung. Möchte mich von jemandem beraten lassen.

<?php
 $postslist = get_posts('numberposts=1&order=DESC&orderby=date');
 foreach ($postslist as $post) :
    setup_postdata($post);
 ?>
<?php the_excerpt(); ?>
<p class="date"><?php echo get_the_date(); ?></p>
<span class="button">
<a href="<?php the_permalink(); ?>">Read More</a>

Ich möchte jedoch einige Posts von bestimmten Kategorien ausschließen. Gibt es eine Lösung, um dies zu erreichen? Vielen Dank!

4
Jornes

Zusätzlich zu der Antwort von Tim kann man immer einen richtigen tax_query verwenden. Alle eingebauten Tag- und Kategorieparameter werden in einen richtigen tax_query konvertiert, bevor sie an die WP_Tax_Query-Klasse übergeben werden, um die JOIN-Klausel für die SQL-Abfrage zu erstellen.

Ich verwende einen tax_query in fast allen Anwendungen, da er sehr flexibel ist, insbesondere wenn es um untergeordnete Begriffe, Ausschlüsse mehrerer Begriffe und sogar mehrere Taxonomien geht. Vielleicht ist der einzige Nachteil, dass Sie die Zeichenfolgensyntax hier nicht wie im OP verwenden können, da ein tax_query ein Array ist, sollte man die Array-Syntax für die Abfrageargs verwenden

Kurz gesagt, um Kategorien auszuschließen, können Sie Folgendes versuchen

$args = [
    // Your other args
    'tax_query' => [
        [
            'taxonomy'         => 'category',
            'field'            => 'term_id',
            'terms'            => [1,2,3], // Array of term ids to exclude
            'operator'         => 'NOT IN', // Exclude
        'exclude_children' => false // Do not exclude the child terms from the terms defined to exclude
        ]
    ]
];
$postslist = get_posts( $args );
3
Pieter Goosen

Bei einem kurzen Blick auf die Dokumentation für get_posts () sieht es nicht so aus, als könnten Sie einen Beitrag anhand seiner Kategorie ausschließen.

EDIT: Dank AntonChanning können Sie Ihrer Argumentzeichenfolge einfach &cat=-1 hinzufügen, wobei 1 die ID der Kategorie ist, die Sie ausschließen möchten:

$postslist = get_posts('numberposts=1&order=DESC&orderby=date&cat=-1');

Sie können diesem auch mehrere Kategorien hinzufügen, z. cat=-1,-2,-3


Die bevorzugte 'Wordpress-Methode', um dies zu tun, ist mit WP_Query .

Wenn Sie dies auf diese Weise tun möchten, müssen Sie anstelle Ihres Aufrufs von get_posts() eine neue Instanz von WP_Query erstellen und Ihre Argumente in einem Array weitergeben. Über den obigen Link unter der Überschrift Category Parameters:

category__not_in (array) - Kategorie-ID verwenden

Mit diesem Argument möchten Sie eine Kategorie ausschließen:

$postslist = new WP_Query(array(
  "post_type" => "post",
  "posts_per_page" => 1,
  "order" => "DESC"
  "orderby" => "date",
  "category__not_in" => 1,
));

Sie werden bemerken, dass ich auch den Beitragstyp 'post' hinzugefügt habe, um das Verhalten zu imitieren, das Sie mit get_posts() hatten, und mit dem Parameter posts_per_page können Sie die Anzahl der mit WP_Query zurückgegebenen Beiträge angeben.

Eine weitere Änderung, die Sie vornehmen müssen, wenn Sie diese WP_Query-Route abfahren, ist die Verwendung einer while-Schleife anstelle der foreach, über die Sie derzeit verfügen. Es gibt eindeutige Verwendungsbeispiele unter der Überschrift Verwendung in den Dokumenten, damit ich sie nicht kopieren und einfügen muss.

Viel Glück!

4
Tim Malone