У меня есть пользовательский вызов ajax с параметром страницы для получения сообщений в шаблоне home.php.Это работает, но когда я изменяю параметр страницы на другой, скажем что-то вроде этого:
http://localhost/<my-wordpress-folder>/wp-admin/admin-ajax.php?action=getPaginatedProjects&page=2
всегда возвращает результаты первой страницы, независимо от того, какое число есть в качестве параметра.
Я использую начальную тему Sage 9.
Контроллер Home.php
<?php
namespace App\Controllers;
use Sober\Controller\Controller;
use WP_Query;
class Home extends Controller
{
public function __construct() {
add_action( 'wp_ajax_getPaginatedProjects', function() {
$response = $this->getPaginatedProjects();
echo $response;
wp_die();
});
add_action( 'wp_ajax_nopriv_getPaginatedProjects', function() {
$response = $this->getPaginatedProjects();
echo $response;
wp_die();
});
}
public function projectsQuery($page = 1) {
$args = [
'post_type' => 'post',
'posts_per_page' => 5,
'post_status' => ['publish'],
'paged' => $page
];
$projects = new WP_Query($args);
return $projects;
}
protected function getPaginatedProjects() {
$response = '';
$page = strval($_POST['page']);
$query = $this->projectsQuery($page);
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$response .= \App\template(locate_template('views/partials/single.blade.php'));
}
}
wp_reset_postdata();
$response = json_encode($response);
return $response;
}
}