編集を始める前に

前回の続きで、トップページやアーカイブ、カテゴリーで表示されるブログ記事一覧を自動的に抜粋表示にする設定をします。

 

記事の抜粋表示
記事の抜粋表示

 

今回は、『functions.php』の編集もおこないます。
このファイルは、WordPressのさまざまな機能を使えるように設定できるのですが、他のテンプレートファイルとは性質が違っているため、編集ミスをするとWordPressの管理画面に戻れなくなってしまったり、エラーメッセージが表示されたり、ページが真っ白になってしまったり、文字が化けたり、初心者にとっては、トラブルの種でもあります。最初は、functions.phpの編集が怖いから、プラグイン探しに重点を置くという方も多いと思いますが、WordPressの編集に慣れると、このファイルを編集する機会が、やたら増えて、ファイルが肥大化するそうです。
私も、難しそうな編集はしません。つーか、できません(*^_^*)。
ただ、数行程度の変更なら、自分の環境にあったプラグインを探すよりも、確実で早いので、こちらを利用します。
それに、今は、ローカル環境、しかも、今回がはじめてのfunctions.phpの編集です。自分が積み上げてきた設定変更がたくさん記述されているわけでもありませんので、何らかのトラブルが起きたとしても、Windows上で子テーマのフォルダを開いて、functions.phpを削除することに抵抗を感じません。編集をミスっても、functions.phpを子テーマのフォルダから削除してしまえば、管理画面に入れないとか、ページの表示がおかしいといったトラブルも簡単になおります。

 

子テーマでfunctions.phpを扱う際の注意点
さて、どうしてfunctions.phpは、他の多くのPHPファイルに比べて厄介なんでしょう?
親テーマと子テーマがある場合、親テーマのテンプレートを継承しつつも、子テーマの設定変更が反映されるように読み込まれます。多くのテンプレートファイルは、親テーマと子テーマの同名のPHPファイルの中身に、同じ記述があっても問題になりません。実際、何度か親テーマのPHPファイルをコピーして、子テーマのフォルダの中に保存するという作業をしていますね。でも、functions.phpは、親テーマのfunctions.phpを子テーマのなかに保存したら、100%、トラブルが起きます。というのも、親と子で同名のファイルのなかに、重複する定義があってはいけないというルールがあるからなんです。

functions.phpは、プログラム色の強いPHPファイルで、他のテンプレートファイルとは読み込みの動作も異なっており、子テーマと親テーマに、同じ関数が定義されていると、同一の関数が複数あると認識され、エラーになります。つまり、子テーマのfunctions.phpに記述できるのは、親テーマのfunction.phpで定義されていない追加部ということになります。
そのため、親テーマのフォルダ内にあるfunctions. phpを、子テーマフォルダ内にコピーしてしまうと、絶対にエラーになると断言できるのです。管理画面に戻ろうとしても、以下のような画面が表示され、戻ることすらできません。

トラブル事例
トラブル事例

でも、こういう場合は、子テーマのなかのfunctions.phpを削除すれば大丈夫です。もともと空っぽのファイルなので、惜しいものでもありませんしね。

 

自動的な抜粋表示の設定をする

では、自動的な抜粋表示の設定をしていきたいと思います。
まず、子テーマのフォルダのなかに、functions.phpを新規作成します。このfunctions.phpは、親テーマからコピーしてはいけません。新規作成のテキストファイルを、『functions.php』という名前で保存したファイルになります。function.phpの中のデータは、今の時点では空っぽです。現時点で子テーマのフォルダにあるファイルは以下のようになっています。

現時点で子テーマのフォルダ内にあるファイル
現時点で子テーマのフォルダ内にあるファイル

 

①子テーマのfunctions.phpに記述する
管理画面の〔外観〕-〔テーマ編集〕を選び、右側のメニューの『編集するテーマ選択』が子フォルダであることを確認して、『テーマのための関数(functions.php)をクリックします。現時点では、空白の子テーマの関数に以下のような指定をし、下部の『ファイルを更新』ボタンをクリックします。

functions phpの記述
functions phpの記述

 

<?php

/* 自動抜粋表示の設定 */
function my_excerpt( $length ) {
global $post;
$content = mb_substr( strip_tags( $post -> post_content ), 0, $length );
$content .= ‘…&nbsp;&nbsp;&nbsp;’ . ‘<a href=”‘. get_permalink($post->ID) . ‘”>’ . ‘この記事の続きを読む’ . ‘</a>’;
return $content;
}

 

②content.phpを編集をする
次は、①で設定した関数を反映させるために、content.phpを編集します。
管理画面の〔外観〕-〔テーマ編集〕の右側のメニューから『content.php』を選びます。前回編集した行の次の次の行を、以下のように編集します。
( 括弧 )内の数値は、抜粋表示する文字数指定になりますから、自分の好きな数値で構いません。

contet phpの編集
contet phpの編集

 

<?php if ( is_search() || is_home() || is_archive() || is_category() ) : // Only display Excerpts for Search ?>
<div class=”entry-summary”>
<?php echo my_excerpt(120); ?>
</div><!– .entry-summary –>

 

 ③ここまでの結果を確認する
抜粋表示されるようになりました。『この記事を読む』が表示され、クリックすると、そのページに飛ぶ設定になっています。
これで、自動的な抜粋表示の設定そのものは完了しました。残りの設定は抜粋表示の設定というよりも、見栄えの設定です。

結果の確認
結果の確認

カタカナや数値を使うと、文字間隔がずれてしまうので、文字数を調整しても、『この記事の続きを読む』が同じ位置に表示されません。
そのため、自動抜粋表示の見栄えを良くする設定をしていきたいと思います。ただ、長くなりましたので、この続きは次回にしたいと思います。