WP_Query in WordPress und füge ACF in die Ergebnisse ein

Lesezeit: 3 Minuten

Ich versuche, alle Beiträge aus einem benutzerdefinierten Beitragstyp in WordPress abzurufen und auch die erweiterten benutzerdefinierten Felder (ACF) in die Ergebnisse einzubeziehen, um eine JSON-Datei mit den Daten zu generieren.

$query = new WP_Query(array(
  'post_type' => 'resources',
  'post_status' => 'publish',
  'posts_per_page' => -1,
));

echo "var json=". json_encode($query->get_posts());

Mit einem einfachen WP_Query, ACF-Daten sind nicht enthalten und ich muss die Ergebnisse iterieren und alle ACF manuell einzeln abrufen. Gibt es eine Möglichkeit, sie in das Original aufzunehmen? WP_Query Ergebnisse?

  • Definieren Sie ein Array, verwenden Sie die While-Schleife, um jeden Beitrag zu durchlaufen, übertragen Sie die gewünschten Beitragsdaten (einschließlich ACF) in das Array und kodieren Sie das Array mit json_encode.

    – Stender

    18. Juni 2020 um 10:45 Uhr

Stenders Benutzeravatar
Stender

Das wäre meine Art, es zu tun.

Schieben Sie alles, was Sie wollen, in das Array und kodieren Sie es.

<?php
$array = array();

$args         = array(
    'post_type'      => 'resources',
    'post_status'    => array( 'publish' ),
    'nopaging'       => true,
    'posts_per_page' => '-1',
    'order'          => 'ASC',
    'orderby'        => 'ID',

);
$queryResults = new WP_Query( $args );

if ( $queryResults->have_posts() ) {
    $counter = 0;
    while ( $queryResults->have_posts() ) {
        $queryResults->the_post();
        $array[ $counter ][ 'ID' ]           = get_the_ID();
        $array[ $counter ][ 'name' ]         = get_the_title();
        $array[ $counter ][ 'thumbnailURL' ] = get_the_post_thumbnail_url();
        $array[ $counter ][ 'place' ]        = get_field( 'resource_location' );
        //etc etc etc

        $counter++;
    }

    $jasoned = json_encode( $array, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES );
    echo $jasoned;
} else {
    //nothing found
}
wp_reset_postdata();

  • Andernfalls können Sie die Abfrage so ändern, dass sie das enthält, was Sie möchten, mit a pre_get_posts Aktion. Schreiben Sie eine Funktion, die die Metadaten an das Ergebnis weiterleitet, und voilà – Ihre Arbeit ist erledigt. – Lesen Sie hier darüber: advancedcustomfields.com/resources/query-posts-custom-fields/…unter „Dynamische $_GET-Parameter“

    – Stender

    18. Juni 2020 um 11:14


  • OK. Ich dachte, es gäbe aus Leistungsgründen vielleicht eine Möglichkeit, die While-Schleife zu vermeiden. Aber es sieht so aus, als wäre das nicht der Fall. Danke. Ich werde mit Ihrer Lösung

    – Tasos

    18. Juni 2020 um 13:15 Uhr

  • @Tasos Gemäß meiner ersten Antwort. Ich hatte das Gleiche gesagt, dass es keine Lösung gibt, außer die Post durchzuschleifen, um ein ACF-Feld zu erhalten. Ich bin mir nicht sicher, wie Ihnen diese Lösung bei dem, was ich bereits gesagt habe, geholfen hat. Viel Glück.

    – Immer hilfsbereit

    18. Juni 2020 um 20:52 Uhr

Sie können verwenden get_fields() um alle mit dem Beitrag registrierten ACF-Felder auf einmal abzurufen. Schauen Sie sich die Dokumentation an Hier.

  • Schöner Aufwand. „get_feilds“ bedeutet jedoch, dass mehrere Codezeilen erforderlich sind, um das Feld und seinen Wert abzurufen. Am besten ist es, alles durchzugehen und von dort aus fortzufahren.

    – Immer hilfsbereit

    18. Juni 2020 um 10:54

  • Sie erhalten nur die Felder, die hier registriert sind, aber nicht den Wert der Felder, oder?

    – Stender

    18. Juni 2020 um 11:10 Uhr

  • @Stender, Sie erhalten gleichzeitig den Schlüssel und den Wert der an den Beitrag angehängten Felder.

    – HW Siew

    18. Juni 2020 um 13:42 Uhr

Hinzufügen von ACF-Daten zur Abfrage. WP_Query wird nicht helfen.

WP_Query gibt keine Werte aus benutzerdefinierten Feldern zurück. Um diese zu erhalten, müssen Sie die Beiträge durchlaufen und die Werte der Felder abrufen.

Weitere Informationen finden Sie in dieser Dokumentation: https://www.advancedcustomfields.com/resources/query-posts-custom-fields/

1450850cookie-checkWP_Query in WordPress und füge ACF in die Ergebnisse ein

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

Privacy policy