Получение начального типа записи для запроса AJAX - PullRequest
0 голосов
/ 19 марта 2019

В WordPress у меня есть кнопка «загрузить больше», которая делает запрос AJAX, чтобы получить больше сообщений.Это работает, обнаруживая событие нажатия на кнопку, а затем отправляя запрос к сценарию PHP, который выполняет запрос типа $query = new WP_Query();.

. Я хочу использовать эту же функцию с несколькими различными типами записей, что быбыть лучшим способом показать тип сообщения моей функции AJAX?

$.ajax({
  type: "POST",
  dataType: "json",
  url: ajax_get_posts_object.ajax_url,
  data: {
    action: "ajax_get_posts",
    security: ajax_get_posts_object.ajax_nonce,
    current_page: next_page,
    categories: $selectedCategories,
    tags: $selectedTags,
  },
  beforeSend: function(xhr) {
    load_more.text("Fetching...");
  },
  success: function(response) {
    if (response) {
      console.log(response);

      // An array to store new items added via AJAX
      var new_items = [];

      // Run through JSON
      $.each(response.posts, function(key, value) {
        var $new_item = $(`<div class="grid-item article-post-card ${value.category["slug"]} ${value.tags ? value.tags[0]["slug"] : ''}">
          <a class="article-post-card__anchor" href=" ${value.permalink}" alt="${value.title}">
            <div class="article-post-card__featured-image-container">
              <div class="article-post-card__overlay"></div>
              <div class="article-post-card__featured-image">${value.thumbnail}</div>
              <div class="article-post-card__category-label">${value.category["name"]}</div>
            </div>
            <div class="article-post-card__content-wrapper">
              <div class="article-post-card__publish-date">
                <time class="updated" datetime="${value.post_time}">${value.date}</time>
              </div>
              <div class="article-post-card__title">${value.title}</div>
              <div class="article-post-card__excerpt">${value.introduction}</div>
            </div>
          </a>
        </div>`);
        new_items.push($new_item[0]);
      });

      next_page >= response.pages ? disableLoadMore(true) : disableLoadMore(false);

      rebuildGrid($grid, new_items, '*');

      updateFilterCount(response.post_count);

      // Update boolean so that page count is not reset
      load_more_has_run = true;

      next_page++;

      // If the AJAX function returned no data
    } else {
      load_more.remove();
    }
  },
  error: function(xhr, status, error) {
    console.log("There was an error", error);
  }
});
});

1 Ответ

0 голосов
/ 19 марта 2019

Вы можете просто добавить в data:{} объект post_type элемент

$.ajax({
  type: "POST",
  dataType: "json",
  url: ajax_get_posts_object.ajax_url,
  data: {
    action: "ajax_get_posts",
    security: ajax_get_posts_object.ajax_nonce,
    current_page: next_page,
    categories: $selectedCategories,
    tags: $selectedTags,
    post_type: 'your_post_type'
  },
  ...
});

, а затем используйте его в вашем WP_Query ()

$post_type = key_exists('post_type', $_POST) ? $_POST['post_type'] : 'post';
$query = new WP_Query(
  'post_type' => $_POST['post_type'],
  ...
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...