WordPress のテーマ Simplicity のカスタマイズ

WordPress のテーマの中で人気のあるテーマ Simplicity のカスタマイズを行いました。

Simplicity は、デザイン的にもすばらしくて好きなテーマですが、このテーマを使用したサイトはどれも、トップページが投稿一覧なのです。投稿(ブログ)は、気軽にできるように別のページ(例えば「ブログ」)に置きたいもの。トップページは、「お知らせ」とか「~の案内」のような情報提供的な内容にしたいですね。そこで、WordPress にかなり前から追加されている機能「カスタム投稿タイプ」を利用してカスタマイズします。

参考にしたのは、説明が解りやすく親切な高橋のり氏の

基礎からのWordPres 高橋のり著 SB Creative

です。

カスタム投稿タイプの導入

まず、カスタム投稿タイプの導入です。
前掲の著書「CHPTER23 カスタム投稿タイプで更新型コンテンツ」に方法が紹介されています。

カスタム投稿タイプを導入するには、functions.php にコードを追加する必要があります。この手間を省いてくれるプラグインが Custom Post Type UI です。これをインストールして有効化すると、ダッシュボードに「CPT UI」というメニューが表示されますので、ここでカスタム投稿タイプの設定をします。

詳しい設定内容は前掲の著書を見ていただくとして(バージョンが新しくなっているので、インタフェースが若干違いますが)、ここではスラッグに「information」、ラベルに「インフォメーション」と設定しました。するとダッシュボードに「インフォメーション」のメニューが表示されて、カスタム投稿タイプが使用できるようになります。
「インフォメーション」で通常の「投稿」と同じように記事を投稿できるようになります。

トップページのテンプレートの作成

Simplicity の「固定フロントぺージ」をページを「最新の投稿」にすると、通常の投稿ページ(ブログ)の一覧が表示されるようになっています。私はこれを先ほど導入した「カスタム投稿タイプ」に変更したいので、そのためのテンプレートを新しく作ります。
これも前掲の著書の「CHAPTER21 固定ページ機能でコンテンツを作成」の中で紹介されています。

最新の投稿一覧を表示するのに使用しているテンプレート「home.php」を子テーマにコピーして、「top.php」に変更します。(名前は任意)そして右のように、

/* Template Name: Top */

というコメントを記入します。これで WordPress が固定ページのテンプレートとして認識してくれます。さらに次の部分ですが

get_template_part(‘list’);

list.php は通常の投稿一覧を表示しますので、これをカスタム投稿タイプの一覧を表示するcustom-list.php (この後作成します)を呼び出すように変更します。

get_template_part(‘custom-list’);

トップページを作成

固定ページで記事の何もないトップページを作成します。この時「テンプレート」のプルダウンリストを表示すると、右のように先ほど定義した「Top」が表示されますので、これを選択します。これでカスタム投稿タイプの一覧を表示する「custom-list.php」が呼び出されるようになります。

 カスタム投稿タイプ一覧を表示するテンプレートの作成

カスタム投稿タイプ一覧を表示する custom-list.php テンプレートは、list.php をコピーして子ページに作成します。

次に Wordpres ループを、カスタム投稿タイプを処理するサブループに書き換えます。
(<?php   ?> は省略してあります)

if (have_posts()) : the_post();
while (have_posts()) : the_post();
…….
endwhile;
endif;

これを以下のように変更します。

$args = array( ‘post_type’ => ‘information’, ‘post_per_page’ => 10, );
$information = new WP_QUERY($args);
if ( $information -> have_posts()):
while ( $information -> have_posts()) : $information -> the_post();
……  (list.php と同じスクリプトを使用)
endwhile;
endif;
wp_reset_postdata();

その他の調整

元の list.php には次のような最新の投稿を判定する条件分岐が2か所あります。

if (!is_home() && !is_searchi()) {
…….
}

 私はこれをフロンtページとして使用し、動きとしては最新の投稿と同じようにしたいので、

is_home()  →  is_front_page()

に置き換えます。

これでカスタム投稿タイプ「インフォメーション」に記事を書くと、トップページにこの記事のアイキャッチ画像、タイトル、本文の最初の部分が表示されるようになります。

パブリサイズ共有設定上の注意点

カスタム投稿タイプは、Facebookや Twitter といったSNSに投稿を自動連携するときに注意が必要です。なぜならばカスタム投稿タイプはこれらの自動連携の対象外になるからです。

投稿をFacebook や Twitter に連携させるには、次のサイトのとおりに

WordPress と Facebook を効果的に連携させるための4つの方法

 All in One SEO Pack というプラグインで、設定した後、

WordPress からTwitter/Facebook に投稿を自動連携する方法

を参考に、Jetpack というプラグインで設定します。これで普通の投稿の自動連携はできます。しかし、カスタム投稿タイプは自動連携できません。カスタム投稿タイプを連携させるには、

【Jetpack】カスタム投稿タイプにパブリサイズ共有を適応させる方法

で紹介されているように、functions.php に下記のコードを追加します。

function hoge() {
    add_post_type_support( '追加したいカスタム投稿タイプの名前', 'publicize' );
}
add_action( 'init', 'hoge' );

「追加したいカスタム投稿タイプの名前」の部分はスラッグを記入します。

これで、カスタム投稿タイプも Facebook や Twitter に投稿が自動連携されるようになります。