Je travaille sur un plugin .J'ai un type de publication personnalisé team
. La publication personnalisée a quatre publications de catégories différentes.J'ai utilisé ce code pour envoyer l'ID de publication de chaque en utilisant ajax.
$(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");
}
});
});
});
Je réussis à envoyer un identifiant et à l'obtenir également. Pour obtenir l'identifiant, mon code est
if(isset($_POST['post_id'])) {
echo $id=$_POST['post_id'];
}
mais je ne peux pas afficher le contenu de chaque message. Comment afficher le contenu de chaque message? Je fais de mon mieux mais j'échoue. Toute aide serait très appréciée
Tout d’abord, vous devez toujours utiliser les méthodes WordPress AJAX, et non une fonction personnalisée à cet effet. Voir AJAX dans Plugins dans le Codex.
Avec cette pratique en tête, vous pouvez configurer votre demande comme ceci. Remplacez l'URL AJAX par
<?php echo admin_url('admin-ajax.php'); ?>
et ajoutez l'action que vous souhaitez que WordPress exécute dans l'étape suivante de vos données.
$(".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");
}
});
});
Nous devons maintenant dire à WordPress quoi faire lorsque quelqu'un appelle f711_get_post_content
.
Enregistrez l'action dans WordPress AJAX. Ceci est fait dans vos fonctions de plugin. La première partie ('wp_ajax_') indique à WordPress qu'il s'agit d'une action AJAX, et la partie suivante est le nom de l'action ('f711_get_post_content'). Le deuxième argument est la fonction que WordPress exécute lorsque cette action est appelée.
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' );
Après cela, vous créez votre fonction de rappel.souvenez-vous TOUJOURS de mourir () vos fonctions AJAX} _ . Si votre fonction génère du JSON, ce que je recommanderais, vous pouvez quitter votre fonction en utilisant wp_send_json( $array );
, qui contient die()
.
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();
}
Ce serait la version JSON recommandée. Il vous permet de transmettre plusieurs variables au client.
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 );
}