web-dev-qa-db-ja.com

どのように私は1つの注目の投稿をスタイル付きの要素で表示できますか?

私はこれを達成するための最良の方法は何かについてのいくつかの考え、アイデア、そして/または方向性を探しています。

基本的に私は1つの "特集"ポストを異なるスタイルのdivに入れて、それからその下の次の3つを表示したいと思います。

私はカスタムの投稿タイプを使用しているので、組み込みのSticky Posts機能は動作しません、そして私はむしろプラグインを使用したくないです...

これが私が達成しようとしていることのスクリーンショットです。
enter image description here

私は以前WordPressでこれをしたことがないので、どこから始めるべきか本当によくわかりません。どの投稿が一番上に表示されるかをトリガーするために、「featured」というカテゴリまたはタグを設定する必要があると思います。それでは、どうすれば通常のフィードに表示されないようにできますか。
おそらく「おすすめ」タグやカテゴリを許可しないことができると思いますが、そのワークフローは面倒なようです(クライアントが過去のおすすめ投稿をオフにして通常のフィードに表示する場合) ).

1
ByteMyPixel

これを実現する1つの方法は、2つのクエリ/ループを確立することです。1つは注目の投稿を処理し、もう1つは他のすべての投稿を処理します(注目の投稿を除く)。

どのようにISを区別するのか、および 特集記事にしないのか は、 特別なプレースホルダカテゴリ または customの使用によって処理できます。 field 、後者の方が、実際の値を持たないプレースホルダカテゴリでカテゴリリストを整理するよりも適切です。

それで、あなたが featured になりたい投稿に対して、meta_keyfeatured_postとmeta_valueの1を持つ カスタムフィールド を割り当てると仮定しましょう。

あなたのテンプレートファイルでは、これに似たことをするでしょう。

$args = array(
   'posts_per_page' => 1,
   'post_type' => 'your_post_type',
   'order' => 'DESC',  
   'meta_query' => array( 
      array(
         'key' => 'featured_post', 
         'value' => '1',
      )
   )
);


$first_query = new WP_Query( $args );
if ( $first_query->have_posts() ):
   while( $first_query->have_posts() ) : $first_query->the_post();

        echo '<div class="featured_post">';

            //your desired output here....      

        echo '</div>';

   endwhile;
endif;
wp_reset_postdata();


$args = array(
   'posts_per_page' => 9,
   'post_type' => 'your_post_type',
   'meta_query' => array( 
      array(
         'key' => 'featured_post', 
         'value' => '1',
         'compare' => 'NOT LIKE' //or NOT or != should suffice
      )
   )
);


$second_query = new WP_Query( $args );
if ( $second_query->have_posts() ):
   while( $second_query->have_posts() ) : $second_query->the_post();

        echo '<div class="regular_posts">';

            //your desired output here....      

        echo '</div>';

   endwhile;
endif;
wp_reset_postdata();

あなたが持つかもしれないいくつかの質問...

Q: featured_postキーと値1を使っておすすめの投稿を(時間の経過とともに)割り当てて、以前の注目の投稿を編集し忘れた場合はどうなりますか?

その場合は、パラメータ。おすすめの投稿の表示を制御する最初のクエリに表示される'order' => 'DESC'は、最新の投稿日から最も古いものへの時系列順にDATEに基づいて投稿メタキー/値のペアを割り当てられる最新を表示します。

Q: ...でも、ランダムな日付から注目の投稿を表示したい場合や、より新しい日付の投稿にすでに投稿メタkey/valueペアが割り当てられている場合はどうなりますか。

この場合、投稿メタkey/valueペアを持つ古い投稿が優先されるように、日付で新しい投稿投稿からkey/valueペアを削除することを忘れないでください。

Q: 他にやり方はありますか?

もちろんです!要件に応じて、変更を管理しやすくする最初のクエリにおすすめ投稿を割り当てる方法が他にあります。これには、現在割り当てられている注目投稿を示す カスタム構築メタボックス の使用が含まれます。投稿の編集画面内であっても、この投稿の種類を使用して、注目の投稿をグローバルに変更する手段を提供します。あなたの要求が上記の解決策を超えるならば、我々はこれをより詳しく見ることができます。


いくつかの役に立つコーデックスリソース:

0
userabuser