Holen und zeigen Sie mehrere benutzerdefinierte Felder über AJAX

Ich versuche, benutzerdefinierte Feldwerte aus der database abzurufen und sie auf der Seite anzuzeigen. Ich bin in der Lage, das für einzelnes kundenspezifisches Feld zu tun, aber nicht sicher, wie man das mit mehreren Werten gleichzeitig tut.

Hier ist meine function, um den neuesten Wert des benutzerdefinierten Preisfelds zu erhalten.

function get_latest_price() { if ( !isset($_GET['post_id']) || empty($_GET['post_id']) ) { die( '0' ); } $post_id = intval( filter_var( $_GET['post_id'], FILTER_SANITIZE_NUMBER_INT ) ); if( empty($post_id) ) { die( '0' ); } $latest_price = get_post_meta( $post_id, 'latest_price', true ); die( strval( $latest_price ) ); } add_action( 'wp_ajax_nopriv_ajax-get-latest-price', 'get_latest_price' ); add_action( 'wp_ajax_ajax-get-latest-price', 'get_latest_price' ); 

Und das ist das JavaScript.

 $(document).ready( function() { $.ajax({ type : "GET", url : ajax_object.ajaxurl, data : { action : "ajax-get-latest-price" }, success: function ( result ) { $('span.price').html( result ); } }); }); 

Dies funktioniert für ein Feld, aber ich muss ~ 10 Felder am Frontend updaten und ich weiß, dass das Hinzufügen ähnlicher PHP-functionen für jedes der 10 Felder den Job erledigen kann, aber ich denke nicht, dass es ein effizienter Weg ist, dies zu tun.

Wir können alle Meta-Schlüssel im PHP-Array mit get_post_meta( get_the_ID() ); aber wie man von dort fortgeht und folgende HTML-Tags aktualisiert.

     ...  

Solutions Collecting From Web of "Holen und zeigen Sie mehrere benutzerdefinierte Felder über AJAX"

Um Daten von js am einfachsten auf PHP zu übertragen, verwenden Sie json_encode oder in WP die Wrapper wp_send_json , wp_send_json_error und wp_send_json_success .

Verwendungsbeispiel:

Auf der PHP-Seite

 function get_latest_product_meta() { $post_id = (int) filter_input(INPUT_GET, 'post_id', FILTER_SANITIZE_NUMBER_INT); $post_id or wp_send_json_error(); // array_shift because when used like so `get_post_meta` return array of arrays... $data = array_map('array_shift', get_post_meta($post_id)); wp_send_json_success($data); } 

Auf der Seite von js

 $(document).ready( function() { $.ajax({ type : "GET", url : ajax_object.ajaxurl, data : { action : "ajax-get-latest-price" }, success: function ( result ) { if (result.error) { alert('Post not found!'); } else if(result.success) { $('span.price').html( result.data.price ); $('span.seller').html( result.data.seller); // and so on.... } } }); });