WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Вывод Статьи через AJAX WP

Пытаюсь вывести Статью на модальное окно по айди.

нашел такое вот решение: ниже код. Если кратко, то та функция работает нормально, если передавать строку или там число а не массив. Если из функции в пхп возращать массив, или там обьект, как в примере ниже. Возращает только слово Array, которое просто слово а не массив, или пишет 500 (Internal Server Error) - .
если что, я имею ввиду про строчку ниже. Я так понял что нельзя массив передавать?

    $data = get_post(77);
	echo $data;

function.php

function go_post()
{

	$data = get_post(77);
	echo $data;

	die;
}
add_action( 'wp_ajax_post', 'go_post', 101 );

а вот во фронтенде

function myFunction(id) {

  document.getElementById("myModal").style.display = "block";
  $("#asdd").text(id);

	try {
		history.replaceState(null,null,'?id='+ id);
		}
	catch(e)
	 {
		location.hash = '#id_'+id;
	 }

 $.ajax({
		type: "GET",
		url: '<?php echo admin_url('admin-ajax.php')  ?>',
		data: {
			action : 'post',
			id1     : 83            
		},
		success: function (response) {
			var d = response;
			console.log(JSON.parse(d));
			alert();
		}
	});
Заметки к вопросу:
lynatik001 26 Ноя. 2019

если что, пытался многими способами этот array обработать. и это один из последних. но видимо то просто слово array

console.log(JSON.parse(d));
campusboy 26 Ноя. 2019

Как ты думаешь, что находится в $data? Какой тип данных?

lynatik001 26 Ноя. 2019

думаю или ассоциативный массив массив. либо обьект класса post. ибо у get_post() есть еще 1 хороший параметер, который тоже пытался юзать. ARRAY_N вроде. ну там еще есть и другой его вид.

-1
lynatik001
26 ноября 2019 -3
  • -1
    Glum600

    Массив нельзя выводить, вместо массива вы можете вывести значение конкретного поля, например контент

        $data = get_post( 77 );
    	echo $data->post_content;
    lynatik001 26 Ноя. 2019

    мне создавать 3 функции для этого что бы вывести статью? - ну тайтл, текст, картинка.
    ? и потом вешать их на 1 екшен? или как. как это выглядеть тогда будет, если на 1 екшен(имею ввиду туда приходить как будет)

    qwert555 26 Ноя. 2019
    echo json_encode($data);

    указать тип данных

     $.ajax({
    		type: "GET",
    		url: '<?php echo admin_url('admin-ajax.php')  ?>',
    		dataType: 'json',
    
    		  ....
    

    получение данных

    response.post_title
    lynatik001 27 Ноя. 2019

    qwert555 спасибо, норм передается таким способом. я то уж думал нельзя. А то некие личности говорили нельзя вывести массив а только 1 поле

    Glum 27 Ноя. 2019

    Советую, некоторым личностям, ознакомится с документацией по работе с массивами в php Массивы дабы не спрашивать почему при выводе массива через echo выводится тип данных вместо желаемого масива

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация