Как добавить числовую нумерацию в результат Ajax, который показывает фильтр подкастов (настраиваемая публикация) по настраиваемым таксономиям - PullRequest
0 голосов
/ 21 февраля 2019

Я хотел бы добавить числовую нумерацию страниц (и динамически загружать сообщения) на эту страницу, которая называется «page-podcast», где я фильтрую с помощью Ajax call мой подкаст (пользовательский пост), используя эти теги, жанр, странуи наберите: https://imgur.com/Qw8JOlC.

В моем интерфейсе page-podcast.php у меня есть этот div, где появляется сообщение:

<div id="datafetch">Search results will appear here</div>

И в функции page.php я добавилфункция, вызывающая Ajax

add_action( 'wp_footer', 'ajax_fetch' );
function ajax_fetch() {
?>
<script type="text/javascript">
    function fetch(e){
    jQuery.ajax({
        url: '<?php echo admin_url('admin-ajax.php'); ?>',
        type: 'post',
        data: { action: 'data_fetch', keyword: keywords},
        success: function(data) {
            jQuery('#datafetch').html( data );
        }
    });

}

</script>

Следующий код является функцией ajax (всегда на function.php):

add_action('wp_ajax_data_fetch' , 'data_fetch');
add_action('wp_ajax_nopriv_data_fetch','data_fetch');
function data_fetch(){

    ...filter part, omitted, because it has nothing to do with the question...

   $the_query = new WP_Query($query_args); 

    if( $the_query->have_posts() ) :
        while( $the_query->have_posts() ): $the_query->the_post(); ?>

            <h2><a href="<?php echo esc_url( post_permalink() ); ?>"><?php the_title();?></a></h2>

        <?php endwhile;
        else: ?>
        <p class="no-criteria"><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
        <?php
        wp_reset_postdata();  
    endif;

    die();
}

Кто-то может поделиться некоторыми советами / примерами / кодом?Потому что я пробовал много решений, которые я нахожу в Интернете, но ничего не работает.

1 Ответ

0 голосов
/ 27 февраля 2019

Решено.Итак, я добавил количество страниц в функции ajax до конца цикла:

<?php if ($numberPages > 1): ?>
<ul>
    <?php
    for ($i = 1; $i <= $numberPages; $i++) {
        echo '<li><a name="page" href="#" class="pagination" value="' . $i . '">'
            . $i . '</a></li>';
    }
    ?>
</ul>

$ numberPages равно:

$the_query = new WP_Query($query_args);
$numberPages = $the_query->max_num_pages;

Я создаю глобальныйпеременная, вызвать $ page, установить в 0. Затем я работал над двумя событиями:

   $(document).on("click touchend", ".premuto", function (event) {
        event.preventDefault();
        page = 1;
        keywords['page'] = page;
        keywords[$(this).attr('name')] = $(this).attr('value');
        fetch(this);
    });
    $(document).on("click touchend", ".pagination", function (event) {
        event.preventDefault();
        keywords[$(this).attr('name')] = $(this).attr('value');
        fetch(this);
    });

.установлен на 1.

". pagination" - это список номеров страниц поста (1,2, ...).

Наконец, в моей функции ajax я получаю номер страницы:

$paged = $_POST['keyword']['page'];

и в своем wp_query я добавил:

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