Как получить контент (с определенным ID) через AJAX при клике на ссылку

30 окт. 2017 г., 18:25:27
Просмотры: 14K
Голосов: 2

Я хочу получить контент с определенным ID через AJAX методом POST.

Например, при клике на ссылку, содержащую ID поста, контент этого поста должен загрузиться в div с id post-data.

Я новичок в работе с AJAX в WordPress и хотел бы получить помощь в реализации этого функционала.

Вот мой код:
HTML-ссылка

<a id="<?php the_ID(); ?>" href="#">Это ссылка</a>
<!-- контейнер для контента -->
<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",
        data: {
            action: "my_custom_data",  // <-- Исправлено: параметр action должен быть внутри data
            post_link: post_ID
        },
        success: function (response) {
            console.log(response);
            $('#post-data').append(response);
        }
    });
    event.stopImmediatePropagation();
    event.preventDefault();
    return false;
});

WP Action

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'];  // <-- Исправлено: используем $_POST вместо data
    echo get_the_content($post_link);
    wp_die();  // <-- Рекомендуется использовать wp_die() вместо die()
}

Кажется, в моем коде есть ошибки, так как я получаю только ответ 0.

1
Комментарии

параметр "action" должен быть передан в данных: "data" : {"post_link" : post_ID, "action" : "my_custom_data"}

mmm mmm
30 окт. 2017 г. 18:46:54
Все ответы на вопрос 1
0

Я бы добавил действие в данные поста

$.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;
.....

Затем используйте $_POST['post_link'] в вашем PHP коде

   function my_custom_data(){
       $post_link = $_POST['post_link'];
   echo get_the_content($post_link);
   die();
   }
30 окт. 2017 г. 18:49:10