1

まず、コードは次のとおりです。

    <?php
    $categories = get_categories();

    foreach ($categories as $cat) { if ($cat->count >= 4) { ?>
    <section class="home-section row">
        <div class="large-12 columns">
            <h3 class="ug-home-title"><span><?=$cat->name;?></span></h3>
            <div class="row">
                <div class="large-6 columns">
                    <?php
                        $args = array(
                            'post_type' => 'post',
                            'category_name' => $cat->name,
                            'posts_per_page' => 1
                        );
                        $query = new WP_Query($args);
                        while ($query->have_posts()) : $query->the_post();
                    ?>
                    <article class="ug-panel">
                        <ul class="ug-tag-list">
                            <?php
                                $post_categories = wp_get_post_categories( $post->ID );
                                foreach ($post_categories as $c) {
                                    echo '<li><a href="'.get_category_link( get_cat_ID(get_category( $c )->name) ).'">'.get_category( $c )->name.'</a></li>';
                                }
                            ?>
                        </ul>

                        <?php (has_post_thumbnail()) ? the_post_thumbnail() : displayBackupImage(); ?>

                        <footer class="ug-panel-inner">
                            <p><em><?= 'il y a '.human_time_diff( get_the_time('U'), current_time('timestamp') ); ?></em></p>
                            <h4><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h4>
                        </footer>
                    </article>
                    <?php endwhile; wp_reset_postdata()?>
                </div>
                <div class="large-6 columns">
                    <ul class="ug-article-list">
                        <?php
                            $args = array(
                                'post_type' => 'post',
                                'category_name' => $cat->name,
                                'posts_per_page' => 3,
                                'offset' => 1
                            );
                            $query = new WP_Query($args);
                            while ($query->have_posts()) : $query->the_post();
                        ?>
                        <li>
                            <article class="clearfix">
                                <a href="<?php echo get_permalink(); ?>" class="left picture">
                                    <?php (has_post_thumbnail()) ? the_post_thumbnail() : displayBackupImage(); ?>
                                </a>
                                <h5><a href="<?php echo get_permalink(); ?>"><?php the_title(); ?></a> <br><small>publié il y a <em><?= human_time_diff( get_the_time('U'), current_time('timestamp') ); ?></em></small></h5>
                            </article>
                        </li>
                        <?php endwhile; wp_reset_postdata();?>
                    </ul>
                </div>
            </div>
        </div>
    </section>
    <hr class="home-hr">            
    <?php }} ?>

ご覧のとおり、最初に 4 つ以上の投稿を含むカテゴリ用の単純な foreach ループがあります。次に、2 つの異なるカスタム クエリを使用して、これらの投稿をコード内の 2 つの異なる場所に表示しています。

これは完全に機能しますが、何らかの理由で、投稿が含まれているにもかかわらず、一部のカテゴリでは必ず失敗します。その理由はわかりません. 出力を確認できるように、スクリーンショットを添付しました。

どんな答えでも大歓迎です。

編集:投稿が同時に 2 つのカテゴリに属している場合に発生するように思われます.おそらく競合ですか? 私は本当にここで途方に暮れています。

編集 2:いいえ、それとは何の関係もありません。一部のカテゴリでは、同じ投稿が 2 回表示されます...

スクリーンショット

4

1 に答える 1

0

私はばかであることがわかりました。

答えはこれ'category_name' => $cat->nameをこれに変えることにある'category_name' => $cat->slug

スラッグは実際の識別子です。プロパティは「バナナ」にするnameことができ、実際のカテゴリにリンクします。

于 2013-10-17T18:08:45.937 に答える