タイル型トップページにBootstrapを利用して変更する(プラグイン不要) ~Lightningカスタマイズ第10回

この記事は約10分で読めます。

Lightning

連載10回目は、トップページをリスト型からタイル型に変更します。
ここはもう、趣味の領域。

ただLightningはBootstrapベース、やろうと思えば簡単にできます。
それも他のテーマでは苦労する「高さ揃え」もあわせて。

興味のある方はトライしてみてください。

なお、Bootstrapさえ積んでいれば他のテーマでもhtmlは流用できます。
CSSでメタ情報や字の大きさなどを整えて下さい。

前置き

バージョンは 3.0.2で試しています。
子テーマを前提としていますので、入れていない方は次のページからダウンロードしてください。

完成見本

こんな感じに仕上がります。

モバイルはリスト型のままとタイル型、二通りのコードを載せています。
私としてはPCと表示をわけた方がいいと思います。
モバイルでタイル型だと、見づらいしスクロールかさばるしですので。

事前準備

トップページを固定ページ利用に変更する

トップページ用の固定ページを作成します。
「カスタマイズ」→「固定フロントページ」で設定を変更し、ページを指定します。

固定ページでPHPファイルをインクルードできるようにする

こちらの記事を参考にfuncitons.phpにコードを記述。
子テーマにmyphpfilesフォルダを作っておきます。

html

top.phpという名前でphpファイルを作成します。
次のコードをファイルに記述します。

モバイルの場合はリスト表示する場合

<?php if (!wp_is_mobile()) :?>
<div id="list" class="container-fluid">
<div class="row list-card row-eq-height">
<?php
 $wp_query = new WP_Query();
 $my_posts = array(
 'post_type' => 'post',
 'posts_per_page'=> '12',
 );
 $wp_query->query( $my_posts );
 if( $wp_query->have_posts() ): while( $wp_query->have_posts() ) : $wp_query->the_post();
?>
<div class="toc col-xs-12 col-sm-6 col-lg-4">
<div class="card">
<div class="term"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('medium'); ?></a></div>
<div class="entry-title"><a href="<?php the_permalink(); ?>" class="entry-link"><?php the_title(); ?></a></div>
<?php get_template_part('module_loop_post_meta'); ?>
<div class="excetop"><?php echo get_the_excerpt(); ?></div>
<Div class="tuzuki" Align="right"><a href="<?php the_permalink() ?>">続きを読む</a></div>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
</div>
</div>
<?php else:?>
<div id="moblist">
<?php
 $wp_query = new WP_Query();
 $my_posts = array(
 'post_type' => 'post',
 'posts_per_page'=> '10',
 );
 $wp_query->query( $my_posts );
 if( $wp_query->have_posts() ): while( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
<div class="card">
<div class="term mobimg"><a href="<?php the_permalink() ?>"><?php if ( has_post_thumbnail() ): ?>
 <?php the_post_thumbnail( 'thumb100' ,array( 'alt' =>get_the_title())); ?>
 <?php else: ?>
 <img src="<?php echo get_template_directory_uri(); ?>/images/no-img.png" alt="<?php the_title(); ?>" width="100" height="100" />
 <?php endif; ?></div>
<div class="entry-title">
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php
 get_template_part('module_loop_post_meta'); ?>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
</div>
<?php endif; ?>

PCとモバイルで分けない場合

<div id="list" class="container-fluid">
<div class="row list-card row-eq-height">
<?php
 $wp_query = new WP_Query();
 $my_posts = array(
 'post_type' => 'post',
 'posts_per_page'=> '12',
 );
 $wp_query->query( $my_posts );
 if( $wp_query->have_posts() ): while( $wp_query->have_posts() ) : $wp_query->the_post();
?>
<div class="toc col-xs-12 col-sm-6 col-lg-4">
<div class="card">
<div class="term"><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('medium'); ?></a></div>
<div class="entry-title"><a href="<?php the_permalink(); ?>" class="entry-link"><?php the_title(); ?></a></div>
<?php get_template_part('module_loop_post_meta'); ?>
<div class="excetop"><?php echo get_the_excerpt(); ?></div>
<Div class="tuzuki" Align="right"><a href="<?php the_permalink() ?>">続きを読む</a></div>
</div>
</div>
<?php endwhile; endif; wp_reset_postdata(); ?>
</div>
</div>

レイアウトの調整

パソコンで3列から2列にしたい場合は、次の通り変更してください。

<div class="toc col-xs-12 col-sm-6">

12で指定した数字を割ったものがカラム数となります。

抜粋を表示したくない場合は次の記述を削除してください。

<div class="excetop"><?php echo get_the_excerpt(); ?></div>

CSSを記述する

style.cssに次の記述をします。

.row-eq-height {
 display: flex;
 flex-wrap: wrap;
}
.card{
 border: 2px solid #f5f5f5;
 padding:10px 10px 10px 10px ;
 height:100%;
 border-radius: 4px;
}
#list .term{
 border-radius: 4px;
}
#list .list-card{
 margin-top:20px;
}
#list .tuzuki{
 padding-bottom:15px;
 font-size:1.4rem;
}
#list .entry-meta_items{
 padding-right:5px;
 margin-bottom:10px !important;
}
#list .entry-meta{
 display: flex;
 border-top: 1px dotted; 
 flex-wrap: wrap;
}
#list .toc{
 padding:5px !important;
}
#list .excetop{
 font-size:1.4rem;
}
#list .entry-title{
 font-size:1.6rem;
 padding:5px 0 5px ;
}
#list .term img{
 max-width:200% !important;
 width:100% ;
 border-radius: 4px;
}
.mobimg{
float:left;
}
.mobimg img{
margin-right:15px !important;
max-width:100px !important;
 border-radius: 4px;
}

モバイルと表示を分けない場合は.mobimgの記述を削除してください。

カードの大きさを高さに合わせたくないときは、次の記述を削除してください。

.card{
 height:100%;
}

完成

top.phpをmyphpfilesにアップします。
固定ページにショートコード[myphp file=’top’]を記載します(半角に変えてください)

まとめ

解答者の写真

固定ページに作ったのは、差し替えがすぐにできるのと、色々応用が効くから。
もちろんindexテンプレートに直接記述してもOK。
そこは自分の技量と相談して。

お疲れ様でした!