Cómo recuperar contenido (con un ID específico) via ajax al hacer clic en un enlace

30 oct 2017, 18:25:27
Vistas: 14K
Votos: 2

Quiero recuperar el contenido con un ID específico mediante el método POST de ajax.

Por ejemplo, si hago clic en un enlace que tiene un ID de post específico, el contenido de ese ID se cargará en el div post-data.

Soy muy nuevo en ajax para WordPress y me gustaría que alguien me ayudara a lograr esto.

Aquí están mis códigos
Etiqueta HTML a

<a id="<?php the_ID(); ?>" href="#">Este es el enlace</a>
<!-- el contenido -->
<div id="post-data"></div>

Jquery Ajax

    $("a").click(function (event) {
    var post_ID = $(this).attr('id');
    $.ajax({
        url: "/wp-admin/admin-ajax.php",
        type: "POST",
        action: "my_custom_data",
        data: {post_link: post_ID},
        success: function (response) {
            console.log(response);
            $('#post-data').append(response);
        }
    });
    event.stopImmediatePropagation();
    event.preventDefault();
    return false;
    });

Acción de WordPress

   add_action('wp_ajax_my_custom_data', 'my_custom_data');
   add_action('wp_ajax_nopriv_my_custom_data', 'my_custom_data');

   function my_custom_data(){
   $post_link = $_POST['post_link'];  // Corregido: usar $_POST en lugar de data
   echo get_the_content($post_link);
   die();
   }

Creo que hay algo mal en mis códigos, solo obtengo la respuesta 0.

1
Comentarios

la "action" debe ir en los datos: "data" : {"post_link" : post_ID, "action" : "my_custom_data"}

mmm mmm
30 oct 2017 18:46:54
Todas las respuestas a la pregunta 1
0

Yo incluiría la acción en los datos del post

$.ajax({
  url: "/wp-admin/admin-ajax.php",
  type:"POST",
       data: { 
       action: "my_custom_data",
       post_link: post_ID
},
success: function (response) {
        console.log(response);
        $('#post-data').append(response);
    }
});
   return false;
.....

Luego usa $_POST['post_link'] en tu PHP

   function my_custom_data(){
       $post_link = $_POST['post_link'];
   echo get_the_content($post_link);
   die();
   }
30 oct 2017 18:49:10