サポート » テーマ » Twenty Fourteenでfeatured-contentをランダムに表示する方法

  • 解決済 finger1192

    (@finger1192)


    初心者の拙い質問で申し訳ございません。
    現在、Twenty Fourteenのテンプレートでfeatured-contentを15件表示しているのですが、表示の並びが現状は更新日です。これをランダムに表示する設定方法はございますでしょうか?

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • featured-contentを表示する処理は、テーマのファイル twentyfourteen/featured-content.php で実行しています。
    その中で

    $featured_posts = twentyfourteen_get_featured_posts();
    foreach ( (array) $featured_posts as $order => $post ) :
    	setup_postdata( $post );
    	// Include the featured content template.
    	get_template_part( 'content', 'featured-post' );
    endforeach;

    という風に、まずfeatured-contentに該当する投稿の一覧を取得してから、foreachのループを使って順に一つずつ投稿を表示しています。

    上記の$featured_postsの中身が、finger1192さんがご覧になっているように更新日の順なのでしょう。

    そういう訳で、foreachのループを始める前に、$featured_postsの中身をランダムな順に変えてしまえば良さそうです。
    $featured_postは投稿の配列だと思いますので、PHPで配列の順序をランダムに変える関数shuffleを付け加えればよいのではないでしょうか。
    例えば
    shuffle( $featured_posts );
    という行をforeachの直前に入れればよいのではないかと思います。

    なお、twentyfourteenのファイルfeatured-content.phpを直接書き換えればよいと思いますが、テーマ編集に慣れておられない場合はまず「子テーマ」を作って子テーマの方でfeatured-content.phpを置き換える方法を試されては如何でしょうか。

    こんにちは

    もう、すでにフィルタを使っていると思いますが、

    add_filter('twentyfourteen_get_featured_posts', 'my_custom_featured_post' ,20);
    
    function my_custom_featured_post( $featured_posts ) {
    
    	shuffle( $featured_posts );
    
    	return $featured_posts;
    }

    nobitaさんがコメントされたとおりフィルタを使う方が簡単にできますね。
    ややこしく長々と書いて失礼しました。

    大変わかりやすいご説明をいただきありがとうございました。
    さっぱりわからなかったお話から
    2パターンのお答えをいただきましたことで
    私の理解を深めることが出来ました。
    早急なご対応ありがとうございました。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「Twenty Fourteenでfeatured-contentをランダムに表示する方法」には新たに返信することはできません。