Созданная мной тема Wordpress отображает все сообщения в категориях и архивах. - PullRequest
0 голосов
/ 12 января 2020

Я только начал играть в WordPress и создал тему для развлечения.

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

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

        <div class="recentBlogsWrapper">
            <h3><?php single_cat_title(); ?><?php get_the_archive_title(); ?> Category</h3>
            <div class="blogPostWrapper">
                <?php
                    $args = array(
                        'post_type' => 'post',
                        'posts_per_page' => 4,
                    );
                    $blogposts = new WP_Query($args);
                    while($blogposts->have_posts()) {
                        $blogposts->the_post();
                ?>
                <a href="<?php echo the_permalink(); ?>" class="blogCard card">
                    <div class="blogHomeImgWrap">
                        <img class="blogPostImg" src="<?php echo get_the_post_thumbnail_url('get_the_ID'(),'full') ?>" />
                    </div>
                    <div class="blogPadding">
                            <h3><?php the_title(); ?></h3>
                            <p><?php the_time('F j, Y') ?></p>
                    </div>
                </a>
                <?php } wp_reset_query(); ?>
            </div>
        </div>

Что мне не хватает в запросе и как мне сослаться на ссылку, по которой я только что нажал?

1 Ответ

1 голос
/ 13 января 2020

Если вы поместили свой код в archive.php, вам не нужно использовать WP_Query (пользовательский запрос), а просто использовать стандартный болотный WordPress l oop, например:

<div class="recentBlogsWrapper">
    <h3><?php single_cat_title(); ?><?php get_the_archive_title(); ?> Category</h3>
    <div class="blogPostWrapper">
        <?php
        while ( have_posts() ) {
            the_post();
            ?>
            <a href="<?php echo the_permalink(); ?>" class="blogCard card">
                <div class="blogHomeImgWrap">
                    <img class="blogPostImg" src="<?php echo get_the_post_thumbnail_url( get_the_ID(), 'full' ) ?>" />
                </div>
                <div class="blogPadding">
                    <h3><?php the_title(); ?></h3>
                    <p><?php the_time( 'F j, Y' ); ?></p>
                </div>
            </a>
        <?php } ?>
    </div>
</div>

Объяснение: используя следующий код в качестве аргумента в вашем пользовательском l oop

$args = array(
  'post_type' => 'post',
  'posts_per_page' => 4,
);

Вы просили WordPress получить все (любые) сообщения. Но на самом деле вы хотите получать записи только в определенной категории, когда находитесь в архиве категорий. К счастью для вас, WordPress делает все это для вас, поэтому, удалив ваш пользовательский запрос, вы должны быть хороши до go.

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