Wie bekomme ich Post-Inhalte, indem ich Ajax anrufe?

Ich arbeite an einem plugin. Ich habe ein benutzerdefiniertes Post-Typ- team Benutzerdefinierte Post hat vier Beiträge von verschiedenen Kategorien. Ich habe diesen Code verwendet, um Post-ID von jedem mit Ajax zu senden.

 $(document).ready(function () { $(".post_thumbnail").click(function () { var id_post = $(this).attr('post_id'); $.ajax({ type: 'POST', url: "", data: { 'post_id': id_post }, success: function (result) { alert(result); }, error: function () { alert("error"); } }); }); }); 

Ich sende erfolgreich ID und bekomme es auch. Um ID zu erhalten, ist mein Code

 if(isset($_POST['post_id'])) { echo $id=$_POST['post_id']; } 

aber ich bin nicht in der Lage, den Inhalt jedes Beitrags anzuzeigen. Wie kann ich den Inhalt jedes Beitrags anzeigen? Ich versuche mein Bestes, aber scheitere. Jede Hilfe würde sehr geschätzt werden

Solutions Collecting From Web of "Wie bekomme ich Post-Inhalte, indem ich Ajax anrufe?"

Zuerst sollten Sie immer die WordPress AJAX-Methoden verwenden, keine benutzerdefinierte function dafür. Siehe AJAX in Plugins im Codex.

Mit dieser Vorgehensweise können Sie Ihre Anfrage so einrichten. Ändern Sie die AJAX-URL in

 < ?php echo admin_url('admin-ajax.php'); ?> 

und fügen Sie die Aktion hinzu, die WordPress im nächsten Schritt für Ihre Daten ausführen soll.

 $(".post_thumbnail").click(function () { var id_post = $(this).attr('post_id'); $.ajax({ type: 'POST', url: '< ?php echo admin_url('admin-ajax.php'); ?>', data: { 'post_id': id_post, 'action': 'f711_get_post_content' //this is the name of the AJAX method called in WordPress }, success: function (result) { alert(result); }, error: function () { alert("error"); } }); }); 

Jetzt müssen wir WordPress sagen, was zu tun ist, wenn jemand f711_get_post_content .

Registrieren Sie die Aktion in WordPress AJAX. Dies geschieht in Ihren Pluginfunctionen. Der erste Teil (‘wp_ajax_’) soll WordPress mitteilen, dass dies eine AJAX-Aktion ist, und der Teil danach ist der Name der Aktion (‘f711_get_post_content’). Das zweite Argument ist die function, die WordPress ausführt, wenn diese Aktion aufgerufen wird.

 add_action( 'wp_ajax_f711_get_post_content', 'f711_get_post_content_callback' ); // If you want not logged in users to be allowed to use this function as well, register it again with this function: add_action( 'wp_ajax_nopriv_f711_get_post_content', 'f711_get_post_content_callback' ); 

Danach erstellen Sie Ihre callbackfunktion. Denken Sie daran, IMMER Ihre AJAX-functionen zu sterben . Wenn Ihre function JSON ausgibt, was ich empfehlen würde, können Sie Ihre function mit wp_send_json( $array ); beenden wp_send_json( $array ); , die in die() eingebaut hat.

 function f711_get_post_content_callback() { // retrieve post_id, and sanitize it to enhance security $post_id = intval($_POST['post_id'] ); // Check if the input was a valid integer if ( $post_id == 0 ) { echo "Invalid Input"; die(); } // get the post $thispost = get_post( $post_id ); // check if post exists if ( !is_object( $thispost ) ) { echo 'There is no post with the ID ' . $post_id; die(); } echo $thispost->post_content; //Maybe you want to echo wpautop( $thispost->post_content ); die(); } 

Dies wäre die empfohlene JSON-Version. Es ermöglicht Ihnen, mehrere Variablen zurück an den Client zu übergeben.

 function f711_get_post_content_callback() { // retrieve post_id, and sanitize it to enhance security $post_id = intval($_POST['post_id'] ); // Check if the input was a valid integer if ( $post_id == 0 ) { $response['error'] = 'true'; $response['result'] = 'Invalid Input'; } else { // get the post $thispost = get_post( $post_id ); // check if post exists if ( !is_object( $thispost ) ) { $response['error'] = 'true'; $response['result'] = 'There is no post with the ID ' . $post_id; } else { $response['error'] = 'false'; $response['result'] = wpautop( $thispost->post_content ); } } wp_send_json( $response ); }