Wie geben Sie JSON mit wp_Query in WordPress aus?

Lesezeit: 2 Minuten

Ich versuche, json mithilfe von WordPress-Posts-Daten in Verbindung mit meta_key-Werten auszugeben oder zu erstellen.

Dies ist der Code, den ich verwende, aber der JSON wird falsch gebildet.

$query = new WP_Query('cat=4&meta_key=meta_long');

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

Irgendwelche Ideen, wie man das macht?

Versuche dies:

$query = new WP_Query('cat=4&meta_key=meta_long');

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

Der Ansatz von Femi ist großartig, aber wenn Sie mit WP_Query-Daten in einer JS-Datei arbeiten möchten, würde ich vorschlagen, sich die wp_localize_script Funktion.

/**
 * WP_Query as JSON
 */
function kevinlearynet_scripts() {

    // custom query
    $posts = new WP_Query( array(
        'category__in' => 4,
        'meta_key' => 'meta_long',
    ) );

    // to json
    $json = json_decode( json_encode( $posts ), true );

    // enqueue our external JS
    wp_enqueue_script( 'main-js', plugins_url( 'assets/main.min.js', __FILE__ ), array( 'jquery' ) );

    // make json accesible within enqueued JS
    wp_localize_script( 'main-js', 'customQuery', $json );
}
add_action( 'wp_enqueue_scripts', 'kevinlearynet_scripts' );

Dadurch wird die erstellt window.customQuery Objekt hinein main.min.js.

  • Was ist der Zweck der Dekodierung der json_encode()? Warum nicht die verschlüsselten Daten direkt an übergeben wp_localize_script()?

    – rnevius

    17. September 2015 um 18:53 Uhr

  • json_decode( json_encode() ) konvertiert alle verschachtelten Objekte in Arrays, ohne sie haben Sie eine Mischung aus stdObj und assoziative Arrays

    – Kevin Leary

    18. September 2015 um 20:19 Uhr

Erweitern Sie den Ansatz von Femi ein wenig weiter, wenn Sie nur einige der Schleifendaten + benutzerdefinierten Felder zurückgeben möchten, versuchen Sie Folgendes:

<?php

// return in JSON format
header( 'Content-type: application/json' );

// Needed if you want to manually browse to this location for testing
define('WP_USE_THEMES', false);
$parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );

// WP_Query arguments
$args = array (

'post_type'              => 'location',
'post_status'            => 'publish',
'name'                   => $_GET["location"],

);

// The Query
$loop = new WP_Query( $args );

//the loop
while ( $loop->have_posts() ) : $loop->the_post();

    // create an array if there is more than one result        
    $locations = array();

     // Add in your custom fields or WP fields that you want
     $locations[] = array(
       'name' => get_the_title(),
       'address' => get_field('street_address'),
       'suburb' => get_field('suburb'),
       'postcode' => get_field('postcode'),
       'phone_number' => get_field('phone_number'),
       'email' => get_field('email_address')
     );

endwhile;

wp_reset_query();

// output
echo json_encode( $locations );

?>

  • $orte = array(); sollte außerhalb der While-Schleife liegen

    – Tse Ka Leong

    23. Oktober 2017 um 6:46 Uhr

1400790cookie-checkWie geben Sie JSON mit wp_Query in WordPress aus?

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

Privacy policy