覚え書きφ(。。)のページで先日メモった
◆ カスタム投稿タイプにある記事の中から最大20件の新着記事をどこかに表示したい時は…のやつ。
query_posts( 'posts_per_page=20&post_type=original'
query_postsよりも、クエリを無駄に実行しないので無駄が省けるbc_pre_get_postsのほうがステキだという情報を頂きました。
「無駄が無くていいよ」で、「早さを体感できる」ものではないです。
書き方例
functions.php
add_action( 'pre_get_posts', 'bc_pre_get_posts' );
function bc_pre_get_posts( $query ) {
if ( is_post_type_archive( 'original' ) ) {
$query->set( 'posts_per_page' , '20' );
$query->set( 'order' , 'ASC' );
}
}
上記の場合、オリジナルというカスタム投稿タイプから投稿された記事を昇順で、なおかつ、20件まで表示しますYOという意味になる。
が、気になること。
archive-original.phpをカスタムフィールド用のテーマに使っているのだけど、どういう仕組みで上記のものが実行されるのかがいまいち理解できていない。
archive-original.phpの該当箇所には、
<?php $i = 0; while ( have_posts() ) : the_post(); ?>
としか書いてない(´・ω・`)
$i = 0; コレ?
ドレ…汗
pre_get_posts
get_posts関数クエリの前に実行する。 アクション関数引数: $wp_query オブジェクトの内容(リスト形式)
と、bc_pre_get_postsは、どー違うのか。
bc_って?(; ̄ー ̄A
あと、add_actionの使い方は、覚えると、面倒な作業を削減できるし、なにやらオモシロソウなので、下記サイトを参考に、機会があればやってみようと思う。
これも、無駄の削減になりますね。
WordPressのadd_action()の使い方について教えてもらった。
add_actionについては、前も利用することを勧められたような気がしているんだけど、きっと気のせいだ。夢かもしれんし。
そして、これも大事。
スタイルシートで3カラムの横並びボックスを表示するところで、3つのうち特定のボックスにだけCSSでmargin-rightに余白を設けるやり方で、特殊なコードの書き方を見つけた。
<?php if ( 0 != ++$i % 3 ) echo 'class="mr50"'; ?>
これで、一番右側のボックスにだけ、 class=”mr50″が入らないようにしてあるみたい。
こういうこともできるんだね。すごい!
実際の書き方
<li <?php if ( 0 != ++$i % 3 ) echo 'class="mr50"'; ?>>
