@joker8999

Как вывести посты через файл admin-ajax.php в wordpress?

Ajax запросом хочу вывести посты, но функции the_post() и the_content() возвращают NULL. Ниже код

Файл function.php

add_action('wp_ajax_ajax_menu', 'get_ajax_menu');
add_action('wp_ajax_nopriv_ajax_menu', 'get_ajax_menu');

function get_ajax_menu() {
global $wp_query;

	echo "Категория меню: " .$category_id = $_GET['category_id']."<br>";

echo "<div class='menu_tags table_main'>
		<div class='row_main'>	
			<div class='cell_main'>";
                               the_post();
			       the_content();
echo "</div>
		</div>
	 </div>";
exit;
}

Файл ajax запроса
$(".menu_manager .menu_category a").click( function() {
  var category_id = $(this).attr('data-item');
    $.ajax ({
      url: "/wp-admin/admin-ajax.php",
      type: "GET",
      dataType: "html",
      data: "action=ajax_menu&category_id="+category_id,
      success: function (html){
        $(".main").html(html);
      }
    })
})
  • Вопрос задан
  • 245 просмотров
Пригласить эксперта
Ответы на вопрос 2
@KingAnton
Это для админки, зачем тебе там целиком посты ?
Ответ написан
@heartdevil
плыву как воздушный шарик
Привет.

Согласно wordpress function reference

Функции типа the_
the_post();
the_content();

Должны быть в цикле типа

<?php 
if ( have_posts() ) {
	while ( have_posts() ) {
		the_post(); 
		//
		// Post Content here
		//
	} // end while
} // end if
?>

Еще для запроса желательно генерировать nonce

wp_create_nonce(""); - почитайте

Адрес в аяскс-запрсе лучше выплюнуть кодом вот так, к примеру

// declare the URL to the file that handles the AJAX request (wp-admin/admin-ajax.php)
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы