Ich arbeite an einem Plugin. Ich habe einen benutzerdefinierten Beitragstyp team
. Benutzerdefinierte Beiträge haben vier Beiträge verschiedener Kategorien. Ich habe diesen Code verwendet, um die Beitrags-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: "<?php echo plugin_dir_url(__FILE__).'post-content.php';?>",
data: {
'post_id': id_post
}, success: function (result) {
alert(result);
},
error: function () {
alert("error");
}
});
});
});
Ich sende ID erfolgreich und erhalte sie auch. Um ID zu erhalten, lautet mein Code
if(isset($_POST['post_id'])) {
echo $id=$_POST['post_id'];
}
aber ich kann nicht den Inhalt jedes Pfostens anzeigen. Wie kann ich den Inhalt jedes Pfostens anzeigen? Ich versuche mein Bestes, aber versage. Jede Hilfe wäre sehr dankbar
Zuerst sollten Sie immer die WordPress AJAX -Methoden verwenden, keine benutzerdefinierte Funktion dafür. Siehe AJAX in Plugins im Codex.
In diesem Sinne können Sie Ihre Anfrage wie folgt einrichten. Ändern Sie die AJAX URL in
<?php echo admin_url('admin-ajax.php'); ?>
und fügen Sie die Aktion, die WordPress im nächsten Schritt ausführen soll, zu Ihren Daten hinzu.
$(".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 mitteilen, was zu tun ist, wenn jemand f711_get_post_content
anruft.
Registrieren Sie die Aktion in WordPress AJAX. Dies geschieht in Ihren Pluginfunktionen. Der erste Teil ('wp_ajax_') teilt WordPress mit, dass es sich um eine AJAX Aktion handelt, und der folgende Teil ist der Name der Aktion ('f711_get_post_content'). Das zweite Argument ist die Funktion, 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 Rückruffunktion.Denken Sie daran, IMMER Ihre AJAX Funktionen zu sterben (). Wenn Ihre Funktion JSON ausgibt, was ich empfehlen würde, können Sie Ihre Funktion mit wp_send_json( $array );
beenden, das 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. Sie können damit mehrere Variablen an den Client zurückgeben.
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 );
}