質問

3つのWP_QUERIEを1つに凝縮することにより、WordPressサイトをスピードアップしようとしています。カテゴリを分類する必要があるので、スイッチを使用して投稿を保持するために3つの配列を定義して、次のようにしています。

 $new_query = new WP_Query();
                $new_query->query('post_type=post&paged='.$paged);
                if ( $new_query->have_posts() ) : while ( $new_query->have_posts() ) : $new_query->the_post();              
                $category = choose_one_category(get_the_category());

                switch ($category){
                    case "Category 1":
                        $cat1[] = $post;
                        break;
                    case "Category 2":
                        $cat2[] = $post;
                        break;
                    case "Category 3":
                        $cat3[] = $post;
                        break;
                }


                endwhile; endif;

これには、投稿がきれいにソートされた3つの配列が残ります。次に、ループの外側の変数$投稿を定義したいので、 the_date() & comments_number() これらの機能を書き直さずに、誰でも助けることができますか?

私が試してみました:

                    foreach ($centre as $new_post){
                        $post = $new_post;

                                             include('front_page_loop.php');
                    } 

どこ front_page_loop.php ループコードですが、日付が異なりますが、同じ投稿を取得しています

役に立ちましたか?

解決

おもう setup_postdata($post) (内部)関数はそれを行います。 Codex(典型的な)で適切なドキュメントを見つけることができませんでしたが、あちこちに例があります。 カスタム選択クエリを使用して投稿を表示します.

このテストスニペットは、問題にあるコードなど、正常に動作しているようです。

foreach ( $cat1 as $post ) {

    setup_postdata($post);
    printf( 'Post "%s" was posted %s ago<br />',
        get_the_title(),
        human_time_diff( strtotime( get_the_date() ) )
        );
}
ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top