カテゴリー指定やカスタムフィールドで表示する場合にうまく表示できません。
どのテンプレートにどのように記述し、どううまく表示されないのか具体的に問題点を記述してください。
上記に書いてあるコードで記事全体をランダム表示することは出来、ページングしても同じ記事が表示されずにうまく動いています。
functions.phpに書いているコードで1分間毎に乱数を出してランダムを変更しています。
上記コードだと全体の記事からランダムしてしまいます、カテゴリーの項目をクリックした場合に選択カテゴリーのみからランダム表示を出来るようにしたいのです。
カテゴリー項目だけを取得しランダムにする所がうまくできず、全体の記事が表示されてしまうので悩んでいます。
記事の取得は、query_posts を使って行われています。この query_posts で記事の取得条件となっているのが
$args = array(post_type => 'post',posts_per_page => '10','paged' => $paged);
の部分ですので、ここにカテゴリーの条件を加えればカテゴリーでランダムな表示が実現できるかと思われます。
なお、query_posts を利用される場合には、最後に(この場合は、endif;の後)に、wp_reset_query(); を記述されることをおすすめします。
ありがとうございます。
自分もご指摘の所でカテゴリーの指定やカスタムフィールドの指定をすればうまくいくと思いいろいろ試しているのですが思うような取得が出来ていません。
カテゴリーでしたらthe_category();をうまく取り入れれば出来るように思うのですがどう記述したらいいのか悩んでいます。
カスタムフィールドの場合は$taxonomy = $wp_query->get_queried_object();か<?php echo esc_html($taxonomy->name); ?>ここら辺で指定している感じるのですが$args = array(post_type => ‘post’,posts_per_page => ’10’,’paged’ => $paged);これに組み込む場合の記述がわからないかんじです。。。
初心者ですみません
カテゴリーとカスタム分類(タクソノミー)の場合は、
$taxonomy = $wp_query->get_queried_object();
でクエリーの条件を取得することができます。
カスタムフィールドと仰っておられますが、カスタム分類の間違いでしょうか。
通常では、カスタムフィールドでの表示というのは存在しません。
指定の仕方は、query_postsのカテゴリー引数、タクソノミー引数を参照してください。
query_postsの引数の指定の仕方には、2種類あり、各指定を & で繋げる指定の仕方と、配列で指定するやり方があります。
配列で指定する方法の方が指定可能な項目が多いので、この方法で学んでおいたほうが、後々悩まなくて済みます。
今回のコードでは、
$args = array(post_type => 'post',posts_per_page => '10','paged' => $paged);
と、配列となっていますので、これにカテゴリー引数で利用出来る cat や category_name を加えてください。
カテゴリーやカスタム分類の表示を archive.php で共用するには、
$args = array(post_type => 'post',posts_per_page => '10','paged' => $paged);
のあとに、is_category などで条件分岐を行った上で、
$args['cat'] = 3;
とすると、$args に後から配列の項目を追加することが可能です。
上記ヒントを元にカスタム分類(タクソノミー)の指定方法を取り入れて下記のような記述をしたらうまくランダム表示でページングも大丈夫でした。
$args = array(post_type => ‘post’,posts_per_page => ’10’,’paged’ => $paged,’tax_query’ => array( /* カスタム分類 */
‘relation’ => ‘OR’,
array(
‘taxonomy’ => ‘area’,
‘field’ => ‘slug’,
‘terms’ => array( $taxonomy->name ),
),
array(
‘taxonomy’ => ‘business_category’,
‘field’ => ‘slug’,
‘terms’ => array( $taxonomy->name ),
),
array(
‘taxonomy’ => ‘job_category’,
‘field’ => ‘slug’,
‘terms’ => array( $taxonomy->name ),
)
)
);