Как связать результаты разбиения на страницы с Bootstrap навигационными вкладками - PullRequest
0 голосов
/ 28 марта 2020

У меня есть 3 навигационные вкладки (созданные с помощью bootstrap) для сортировки результатов с помощью wp_query на моей странице библиотеки. Нумерация страниц работает хорошо, проблема у меня заключается в следующем: когда я нажимаю кнопку «Далее» или «Второй» на моей странице, активная вкладка на странице «Библиотека» возвращается к первой вкладке сортировки по умолчанию (недавняя).

Мой код:

<?php
/**
 * displays archive Library page
*/

get_header();
?>
<div id="page-header">
    <section class="wrapper">
        <div class="breadcrumbs">
            You are here: <a href="">Home</a> / <span class="current">Library</span>
        </div>

        <h1 class="page-title half">Library</h1>

        <div id="item-nav">
            <div id="object-nav" class="item-list-tabs" role="navigation">
                <ul class="tabs-nav tabs">
                    <li class="nav-three " data-tab="origin">Book origin</li>
                    <li class="nav-two " data-tab="year">Book release date</li>
                    <li class="nav-one current" data-tab="recent">Recent </li>
                 </ul>
            </div><!-- /.item-list-tabs -->
        </div><!-- /#item-nav -->

        <div class="clear"></div>
    </section>
</div><!-- /#page-header -->

<section class="wrapper">

        <main class="tab-content current vocab-container" id="recent">
        <ul class="blog-1 blog-1-full-width col-3 list-unstyled">
            <div class='row'>
                <?php 
                    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                        $args = array(

                        'post_type'   => 'library',
                        'post_type'   => 'library',
                        'orderby'     => 'meta_value',
                        'posts_per_page' => 9,
                        'paged'       => $paged  
                        );

                    $wp_query = new WP_Query( $args );

                    if ($wp_query->have_posts() ) : while( $wp_query->have_posts() ) : $wp_query->the_post();
                            get_template_part( 'template-parts/content/content', 'lib' );
                        endwhile; else:
                        // nothing was found
                        endif;
                    wp_reset_postdata(); /* Restore original Post Data */
                    twentynineteen_the_posts_navigation();
                ?>
            </div>
        </ul>
    </main>

    <main class="tab-content vocab-container" id="year">
        <ul class="blog-1 blog-1-full-width col-3 list-unstyled">
            <div class='row'>

                <?php 
                    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                        $args = array(
                        'post_status' => 'published',
                        'post_type'   => 'library',
                        'orderby'     => 'meta_value_num',
                        'meta_key'    => 'year',
                        'posts_per_page' => 9,
                        'paged'       => $paged  
                        );

                    $wp_query = new WP_Query( $args );

                    if ($wp_query->have_posts() ) : while( $wp_query->have_posts() ) : $wp_query->the_post();
                            get_template_part( 'template-parts/content/content', 'lib' );
                        endwhile; else:
                        // nothing was found
                        endif;
                    wp_reset_postdata(); /* Restore original Post Data */
                    twentynineteen_the_posts_navigation();
                ?>
            </div>
        </ul>
    </main>

    <main class="tab-content vocab-container" id="origin">
        <ul class="blog-1 blog-1-full-width col-3 list-unstyled">
            <div class='row'>

                <?php 
                    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
                        $args = array(
                        'post_status' => 'published',
                        'post_type'   => 'library',
                        'orderby'     => 'meta_value',
                        'meta_key'    => 'origin',
                        'posts_per_page' => 9,
                        'paged'       => $paged  
                        );

                    $wp_query = new WP_Query( $args );

                    if ($wp_query->have_posts() ) : while( $wp_query->have_posts() ) : $wp_query->the_post();
                            get_template_part( 'template-parts/content/content', 'lib' );
                        endwhile; else:
                        // nothing was found
                        endif;
                    wp_reset_postdata(); /* Restore original Post Data */
                    twentynineteen_the_posts_navigation();
                ?>
            </div>
        </ul>
    </main>

</section><!-- /.wrapper -->

<?php
    get_footer();
?>

Ссылка на мой сайт Страница библиотеки: http://elluse.com/library/

Я очень ценю вашу помощь. Лана:)

1 Ответ

0 голосов
/ 01 апреля 2020
If someone has similar issue I found similar answered question on stackexchange website. Here is link. 
https://wordpress.stackexchange.com/questions/151596/sorting-custom-posts-on-archive-page-with-pagination?newreg=a1f2074307b347d5aecc0b666dcff3be



<script>
function submitform(val) {
    document.getElementById('sort-option').value = val;
    document.getElementById('form-sort').submit();
}
</script>

<form id="form-sort" action="<?php echo get_permalink(); ?>" method="post">
    <ul>
        <li>Sort By:</li>
        <li><a href="#!" onclick="javascript: submitform('newest');">Newest rating</a>
        </li>
        <li><a href="#!" onclick="javascript: submitform('highest');">Highest rating</a>
        </li>
        <li><a href="#!" onclick="javascript: submitform('lowest');">Lowest rating</a>
        </li>
    </ul>
    <input type='hidden' id='sort-option' name='sort-option' value=''>
</form>
_____________________________________________________________________________

if($wp_query->get('page') == 0 && empty($_POST) && !empty($_SESSION)) session_unset();

if(!empty($_POST) || !empty($_SESSION)) {

    switch($_POST['sort-option']) {
        case 'newest':
            $_SESSION["sort"] = SORT_DESC;
            $_SESSION["sort_by"] = 'review_date';
            break;
        case 'highest':
            $_SESSION["sort"] = SORT_DESC;
            $_SESSION["sort_by"] = 'rating';
            break;
        case 'lowest':
            $_SESSION["sort"] = SORT_ASC;
            $_SESSION["sort_by"] = 'rating';
            break;
    }

    foreach($reviews as $k => $v) {
        $column_id[$k] = $v[$_SESSION["sort_by"]];
    }

    array_multisort($column_id, $_SESSION["sort"], SORT_NUMERIC, $reviews);

}
...