33:先頭に固定表示を追加
公開日:2019年07月15日
更新日:2019年07月22日
管理画面「投稿」>「クイック編集」
「この投稿を先頭に固定表示」をチェックして「更新」します。
先頭に固定表示を追加
トップページ表示用テンプレート「front-page.php」に先頭に固定表示を追加します。
表示条件
「get_option( ‘sticky_posts’ )」で先頭に固定表示がチェックされている投稿IDを配列で取得します。
取得した配列を「’post__in’」の値に指定し、先頭に固定表示がチェックされた投稿IDのページデータのみ取得します。
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 3, 'post__in' => get_option( 'sticky_posts' ), ); $the_query = new WP_Query($args); ?>
front-page.php
先頭に固定表示は選択された投稿がない場合もあるため「if (get_option( ‘sticky_posts’ ))」が満たされた時だけ実行します。
コピペ用
<?php /***** サブループ条件 *****/ ?> <?php //var_dump(get_option( 'sticky_posts' )); ?> <?php if (get_option( 'sticky_posts' )) : ?> <?php $args = array( 'post_type' => 'post', 'posts_per_page' => 3, 'post__in' => get_option( 'sticky_posts' ), ); $the_query = new WP_Query($args); ?> <?php /***** サブループ開始 *****/ ?> <?php if ($the_query->have_posts()) : ?> <div class="sub-loop"> <div class="inner"> <h2>サブループ:先頭に固定表示</h2> <div class="flex"> <?php while ($the_query->have_posts()) : ?> <?php $the_query->the_post(); ?> <div class="flex-item"> <a href="<?php the_permalink(); ?>"> <div class="image"> <?php if (has_post_thumbnail()) { the_post_thumbnail('img_300_200'); } else { echo '<img src="'.get_template_directory_uri().'/img/no-image.png" alt="'.get_the_title().'">'.PHP_EOL; } ?> </div> <div class="item-title"><?php the_title(); ?></div> </a> </div><!-- .flex-item --> <?php endwhile; ?> </div><!-- .flex --> </div><!-- .inner --> </div><!-- .sub-loop --> <?php endif; ?> <?php wp_reset_postdata(); ?> <?php endif; ?> <?php /***** サブループ終了 *****/ ?>
先頭に固定表示用サブループ追加後
<?php get_header(); ?> <?php /***** サブループ条件 *****/ ?> <?php //var_dump(get_option( 'sticky_posts' )); ?> <?php if (get_option( 'sticky_posts' )) : ?> <?php $args = array( 'post_type' => 'post', 'posts_per_page' => 3, 'post__in' => get_option( 'sticky_posts' ), ); $the_query = new WP_Query($args); ?> <?php /***** サブループ開始 *****/ ?> <?php if ($the_query->have_posts()) : ?> <div class="sub-loop"> <div class="inner"> <h2>サブループ:先頭に固定表示</h2> <div class="flex"> <?php while ($the_query->have_posts()) : ?> <?php $the_query->the_post(); ?> <div class="flex-item"> <a href="<?php the_permalink(); ?>"> <div class="image"> <?php if (has_post_thumbnail()) { the_post_thumbnail('img_300_200'); } else { echo '<img src="'.get_template_directory_uri().'/img/no-image.png" alt="'.get_the_title().'">'.PHP_EOL; } ?> </div> <div class="item-title"><?php the_title(); ?></div> </a> </div><!-- .flex-item --> <?php endwhile; ?> </div><!-- .flex --> </div><!-- .inner --> </div><!-- .sub-loop --> <?php endif; ?> <?php wp_reset_postdata(); ?> <?php endif; ?> <?php /***** サブループ終了 *****/ ?> <div class="works"> <div class="inner"> :
style.css
ブログ表示用CSSを流用して「sub-loop」用CSSを追加
/********************************* sub-loop **********************************/ .sub-loop .title { font-size: 60px; font-weight: 400; margin: 0; padding: 1em 0 0; } .sub-loop .subtitle { font-size: 24px; padding: 0 0 2em; } .sub-loop .flex { display: flex; flex-wrap: wrap; } .sub-loop .flex-item { width: 300px; box-sizing: border-box; margin-right: 30px; margin-bottom: 30px; } .sub-loop .flex-item a { display: block; color: #333; } .sub-loop .flex-item a:hover { text-decoration: none; opacity: .8; } /* .sub-loop .flex-item:last-child { margin-right: 0; } */ .sub-loop .flex-item:nth-child(3n) { margin-right: 0; } .sub-loop .item-title { color: green; font-size: 18px; font-weight: bold; margin: 1em 0; } .sub-loop .item-text { font-size: 18px; margin: 1em 0; } .sub-loop .item-date { font-size: 14px; margin: 1em 0; } .sub-loop .link { text-align: right; padding: 30px 0; } .sub-loop .link a { font-size: 24px; color: #000; text-align: right; }
表示結果
先頭に固定表示にチェックを入れた投稿が表示されます。
※欠席者対応:lesson24 – lesson25
同じカテゴリーのコンテンツ