Использование get_queried_object в functions.php для передачи данных для ajax загрузки большего количества сообщений

Я везде искал здесь, а также широко просматривал поиск в Google, но не нашел ничего специфического для этой проблемы. Я пытаюсь создать типичную функциональность кнопки «загрузить больше», которая работает на странице архива таксономии произвольного типа записей. Вот что у меня есть на данный момент:

// Load more posts
add_action('wp_ajax_load_posts_by_ajax', 'load_posts_by_ajax_callback');
add_action('wp_ajax_nopriv_load_posts_by_ajax', 'load_posts_by_ajax_callback');

function load_posts_by_ajax_callback() {
    $the_issue_key = $_POST['the_issue_key'];
    check_ajax_referer('load_more_posts', 'security');
    $paged = $_POST['page'];
    $queried_object = get_queried_object();
    $args = array(
        'post_type' => 'case_study',
        'post_status' => 'publish',
        'posts_per_archive_page' => '2',
        'paged' => $paged,
        );
    $my_posts = new WP_Query( $args );
    if ( $my_posts->have_posts() ) :
        ?>
        <?php while ( $my_posts->have_posts() ) : $my_posts->the_post() ?>
            <h2><?php the_title() ?></h2>
            <p><?php echo $queried_object; ?></p>
            <?php the_excerpt() ?>
        <?php endwhile ?>
        <?php
    endif;
    wp_die();
}

Сценарий:

// Script
var ajaxurl = 'http://ovo2/wp-admin/admin-ajax.php'; 
var page = 2;
jQuery(function($) {

    $('body').on('click', '.loadmore', function() {
        var data = {
            'action': 'load_posts_by_ajax',
            'page': page,
            'security': '<?php echo wp_create_nonce("load_more_posts"); ?>'
        };

        $.post(ajaxurl, data, function(response) {
            $('.my-posts').append(response);
            page++;
        });

    });
});

Это отлично работает, но загружает ВСЕ сообщения case_study CPT, когда мне действительно нужны сообщения, относящиеся к таксономии. На самой странице моего архива я добавил в массив $ args для первых двух сообщений, которые отображаются при загрузке страницы:

    'tax_query' => array (
        array (
            'taxonomy' => $queried_object->taxonomy,
            'field' => 'id',
            'terms' => $queried_object->term_id,
            ),
        ),

И он извлекает сообщения, относящиеся к таксономии, но когда я добавляю его к функции в моем файле функций, чтобы загрузить больше сообщений, это не работает. Кажется довольно очевидным, что это как-то связано с невозможностью передавать переменные из get_queried_object из php в скрипт, но я не уверен, как это решить.

Я также пробовал использовать wp_localize_script, но не смог правильно его настроить.

Любая помощь будет принята с благодарностью!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
695
1

Ответы 1

В качестве последней попытки решить мою проблему и получить необходимую мне функциональность я решил поискать надежный плагин, который мог бы делать все, что мне нужно, и я действительно нашел один: AJAX Загрузить больше

С помощью надстройки Filters я смог настроить за 10 минут то, что я пытался сделать сам почти 8 часов. Хотя его функциональные возможности более специфичны, я бы поставил этот плагин рядом с ACF Pro с точки зрения профессионализма и поддержки. Я использую очень мало плагинов при сборке сайта, но я добавлю этот в список.

Другие вопросы по теме