Двадцать двенадцать тематических страниц выпуска


Я создал блог Wordpress более года назад, основав дочернюю тему на теме "двадцать двенадцать", я внес несколько незначительных изменений. Одним из этих изменений было добавление пользовательского содержимого портфолио, чтобы у меня была страница категории портфолио, на которой были ссылки на отдельные публикации в этой категории.

Проблема: Что-то, что в последнее время стало очевидным по мере роста числа моих сообщений, заключается в том, что когда я нажимаю на страницу главного меню/категорий, она отображает первое 10 сообщений в порядке, но если их более 10, ссылка "Более старое сообщение" в нижней части страницы предлагает перейти, но те же 10 сообщений (самые новые сообщения) отображаются снова, несмотря на то, что их 13, поэтому он должен перевернуться и показать 3 самых старых. Эту проблему можно увидеть, перейдя по ссылке на эту страницу ниже, в других каталогах в основном не более 10 сообщений. coder-tronics.com/categories/c-programming

Теперь, если я использую ссылку Категории боковой панели, выбирая Категория C-программирования, старые и новые ссылки на страницы работают нормально, отображая все 13 сообщений правильно, эта ссылка демонстрирует правильную работу.

Http://coder-tronics.com/category/c-programming

Я пытался понять, что я сделал не так, это было больше года назад, я следовал учебнику, чтобы сделать это, поэтому я не так хорошо знаком с Wordpress, как раньше. У меня есть custom-content.php который основан на content.php, а также шаблоны страниц для каждой категории портфолио т. е. программирование на языке Си и т.д. Я проверил custom-content.php и, похоже, все в порядке, так как были внесены некоторые незначительные поправки и была предпринята попытка устранить эту проблему, используя шаблон страницы портфолио для программирования на C content.php, это никак не повлияло на проблему.

Не опубликовал никакого кода, но рад это сделать, просто не уверен, в чем проблема в данный момент, и не хотел публиковать не относящийся к делу код.

Спасибо,

Муравей

Отредактировано добавлена ссылка на код комментарий Питера ниже

    <?php
/*
Template Name: C Programming Category page
*/

get_header(); ?>

    <section id="primary" class="site-content">
        <div id="content" role="main">

        <?php query_posts('category_name = C Programming'); ?>
        <?php if ( have_posts() ) : ?>
            <header class="archive-header">


            <?php if ( category_description() ) : // Show an optional category description ?>
                <div class="archive-meta"><?php echo category_description(); ?></div>
            <?php endif; ?>
            </header><!-- .archive-header -->
            <?php
            /* Start the Loop */
            while ( have_posts() ) : the_post();

                /* Include the post format-specific template for the content. If you want to
                 * this in a child theme then include a file called called content-___.php
                 * (where ___ is the post format) and that will be used instead.
                 */
                get_template_part( 'content-custom', get_post_format() );

            endwhile;

            twentytwelve_content_nav( 'nav-below' );
            ?>

        <?php else : ?>
            <?php get_template_part( 'content', 'none' ); ?>
        <?php endif; ?>

        </div><!-- #content -->
    </section><!-- #primary -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
Author: Pieter Goosen, 2014-08-19

1 answers

Вам вообще не следует использовать query_posts. Все объяснено в этом посте Я недавно это сделал. Проверьте также все ссылки, которые я дал в этом посте

Большая проблема, почему ваша разбивка на страницы не работает, заключается в том, что функция разбиения на страницы по умолчанию двадцать двенадцать, twentytwelve_content_nav, не предусматривает возможности для пользовательских запросов. Однако вы можете переопределить эту функцию, так как она заключена в условный оператор if ( ! function_exists() ).

Во-первых, для вашего пользовательского запроса. Как сказано, не используйте и никогда не используйте query_posts, в большинстве случаев это не удается сразу при разбиении на страницы. Здесь вы собираетесь использовать WP_Query. Поэтому измените шаблон своей страницы на этот (здесь только один пункт, category_name использует категорию slug, а не имя)

<?php
/*
Template Name: C Programming Category page
*/

get_header(); ?>

    <div id="primary" class="site-content">
        <div id="content" role="main">

        <?php
        $args = array(
            'category_name' => 'c-programming'
        );

        $my_query = new WP_Query($args); ?>
        <?php if ( $my_query->have_posts() ) : ?>

            <?php /* Start the Loop */ ?>
            <?php while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
                <?php get_template_part( 'content', 'custom' ); ?>
            <?php endwhile; ?>

            <?php twentytwelve_content_nav( 'nav-below' ); ?>

        <?php else : ?>

            <article id="post-0" class="post no-results not-found">

            <?php if ( current_user_can( 'edit_posts' ) ) :
                // Show a different message to a logged-in user who can add posts.
            ?>
                <header class="entry-header">
                    <h1 class="entry-title"><?php _e( 'No posts to display', 'twentytwelve' ); ?></h1>
                </header>

                <div class="entry-content">
                    <p><?php printf( __( 'Ready to publish your first post? <a href="%s">Get started here</a>.', 'twentytwelve' ), admin_url( 'post-new.php' ) ); ?></p>
                </div><!-- .entry-content -->

            <?php else :
                // Show the default message to everyone else.
            ?>
                <header class="entry-header">
                    <h1 class="entry-title"><?php _e( 'Nothing Found', 'twentytwelve' ); ?></h1>
                </header>

                <div class="entry-content">
                    <p><?php _e( 'Apologies, but no results were found. Perhaps searching will help find a related post.', 'twentytwelve' ); ?></p>
                    <?php get_search_form(); ?>
                </div><!-- .entry-content -->
            <?php endif; // end current_user_can() check ?>

            </article><!-- #post-0 -->

        <?php endif; // end have_posts() check ?>
    <?php wp_reset_postdata(); ?>
        </div><!-- #content -->
    </div><!-- #primary -->

<?php get_sidebar( 'front' ); ?>
<?php get_footer(); ?>

Теперь скопируйте функцию twentytwelve_content_nav в свою дочернюю тему functions.php . Вы собираетесь изменить это. Вот измененный код. Проработайте это и проверьте изменения, я прокомментировал их

function twentytwelve_content_nav( $html_id ) {
    global $wp_query, $my_query; // add your custom query variable

    $html_id = esc_attr( $html_id );

    if ( $wp_query->max_num_pages > 1 ||  $my_query->max_num_pages > 1 ) : ?> // Add your custom query to the max_num_parameter
        <nav id="<?php echo $html_id; ?>" class="navigation" role="navigation">
            <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3>
            <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentytwelve' ) ); ?></div>
            <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentytwelve' ) ); ?></div>
        </nav><!-- #<?php echo $html_id; ?> .navigation -->
    <?php endif;
}

Это должно сработать

 2
Author: Pieter Goosen, 2017-04-13 12:37:32