WordPress: Erhalten Sie alle Beiträge eines benutzerdefinierten Typs

Lesezeit: 4 Minuten

Ich habe dieses seltsame Problem. Ich möchte alle benutzerdefinierten Beiträge abrufen, hier ist mein Snippet.

$query = new WP_Query(array(
    'post_type' => 'custom',
    'post_status' => 'publish'
));


while ($query->have_posts()) {
    $query->the_post();
    $post_id = get_the_ID();
    echo $post_id;
    echo "<br>";
}

wp_reset_query();

Dadurch bekomme ich nur 6 davon, während ich mehr als 50 Datensätze habe, die diesen Kriterien in der Datenbank entsprechen. Kann mir jemand sagen, wo ich falsch gelaufen bin?

Danke vielmals!

Benutzeravatar von jono
jono

'posts_per_page' => -1,

Fügen Sie dies dem Argumentarray WP_QUERY hinzu und es sollte alle Beiträge dieses benutzerdefinierten Beitragstyps zurückgeben.

Dadurch erhalten alle Beiträge eines benutzerdefinierten Typs Verwendung get_posts:

$posts = get_posts([
  'post_type' => 'custom',
  'post_status' => 'publish',
  'numberposts' => -1
  // 'order'    => 'ASC'
]);

  • So viel besser als WP_Query. Vielen Dank 🙂

    – Rauben

    25. Januar 2019 um 3:49 Uhr

  • @Rob: WP_QUEry und get_posts unterscheiden sich geringfügig. Wenn Sie beispielsweise Paginierung benötigen, hilft Ihnen get_posts nicht viel (Sie können beispielsweise die Gesamtzahl der Beiträge nicht angeben).

    – Brett

    16. August 2019 um 14:32 Uhr

  • Vielen Dank! Du hast meine Zeit gespart. 👍

    – Imran

    11. Januar um 10:55 Uhr

Die Anzahl der zurückzugebenden Beiträge wird unter Einstellungen > Lesen eingestellt

Sie können die Anzahl der Posts übergeben, die Ihre Abfrage zurückgeben soll.

'posts_per_page' => 'number of posts'

Sie sollten niemals verwenden:

'posts_per_page' => -1

Es ist langsam und nicht effektiv, wenn Sie über SQL-Abfragegeschwindigkeiten sprechen. Es ist also viel besser, eine große Ganzzahl zu verwenden.

Dies ist ein Leistungsrisiko. Was ist, wenn wir 100.000 Beiträge haben? Dies könnte die Website zum Absturz bringen. Wenn Sie beispielsweise ein Widget schreiben und nur alle benutzerdefinierten Beitragstypen abrufen möchten, legen Sie eine angemessene Obergrenze für Ihre Situation fest.

Weitere Details hier:
https://10up.github.io/Engineering-Best-Practices/php/#performance

Es ist ratsam, anstelle von „-1“ eine Ganzzahl zu verwenden. Beispiel:

'posts_per_page' => 999999,

  • Warum ist es? Sie sollten Gründe angeben, um von persönlichen Vorlieben zu unterscheiden.

    – Phil Healey

    22. Juli 2017 um 19:45 Uhr

  • Wow.. 6 Downvotes für den Vorschlag einer optimaleren Lösung. Während 'posts_per_page' => -1, ist nicht falsch, kann aber zu Leistungsproblemen führen, wenn die Anzahl der Datensätze groß ist. Die Verwendung einer Zahl wie 999999 oder einer anderen Zahl, die höher ist als Ihre maximalen Datensätze in der Datenbank, ist optimal.

    – tovishalck

    11. Januar 2019 um 6:55 Uhr

  • Die Auswirkung auf die Leistung liegt nicht daran, dass WP durch die Zahl -1 irgendwie sehr langsam wird … Es liegt daran, dass Sie WP bitten, eine große Menge an Posts aus der Datenbank zu holen. Wenn Sie davon ausgehen, dass diese Zahl immer höher ist als die Anzahl der Posts, werden Sie die gleiche Anzahl von Posts abrufen, wie dies bei der Abfrage der Fall war 'posts_per_page' => -1und folglich wird die Leistung identisch sein.

    – inwerpsel

    27. Januar 2021 um 13:19 Uhr

  • Antworten Sie nicht auf das, was nicht in der Frage gestellt wird. Wenn Sie eine bessere Antwort haben, geben Sie einen triftigen Grund an.

    – Raj

    2. Dezember 2021 um 19:46 Uhr

  • Warum ist es? Sie sollten Gründe angeben, um von persönlichen Vorlieben zu unterscheiden.

    – Phil Healey

    22. Juli 2017 um 19:45 Uhr

  • Wow.. 6 Downvotes für den Vorschlag einer optimaleren Lösung. Während 'posts_per_page' => -1, ist nicht falsch, kann aber zu Leistungsproblemen führen, wenn die Anzahl der Datensätze groß ist. Die Verwendung einer Zahl wie 999999 oder einer anderen Zahl, die höher ist als Ihre maximalen Datensätze in der Datenbank, ist optimal.

    – tovishalck

    11. Januar 2019 um 6:55 Uhr

  • Die Auswirkung auf die Leistung liegt nicht daran, dass WP durch die Zahl -1 irgendwie sehr langsam wird … Es liegt daran, dass Sie WP bitten, eine große Menge an Posts aus der Datenbank zu holen. Wenn Sie davon ausgehen, dass diese Zahl immer höher ist als die Anzahl der Posts, werden Sie die gleiche Anzahl von Posts abrufen, wie dies bei der Abfrage der Fall war 'posts_per_page' => -1und folglich wird die Leistung identisch sein.

    – inwerpsel

    27. Januar 2021 um 13:19 Uhr

  • Antworten Sie nicht auf das, was nicht in der Frage gestellt wird. Wenn Sie eine bessere Antwort haben, geben Sie einen triftigen Grund an.

    – Raj

    2. Dezember 2021 um 19:46 Uhr

1406970cookie-checkWordPress: Erhalten Sie alle Beiträge eines benutzerdefinierten Typs

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy