Почему мой ответ на вызов ajax в WordPress с параметром разбиения на страницы всегда дает мне первую страницу? - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть пользовательский вызов 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;
  }
}

1 Ответ

0 голосов
/ 26 ноября 2018

вы просили 1 страницу с 5 сообщениями

try $ page - = 1;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...