Twentysixteen カスタマイズ 4 〜 最小限度の改変を見極め実施する

ヘッダーの改変でもそうでしたが、当然ながらcssだけの変更では済むはずがなく、テンプレートファイルそのものやfunctions.phpを弄ることになります。ここでは functions.php について書きましょう。
前の記事、メディアクエリについての続きです。

functions.php の中身もこれまでは混沌としていました。あちらこちらの天才たちがサイトに載せている便利な関数をコピペしまくっただけのものですが、数が増えてきて管理不能に陥ります。ある関数はあるサイトで使い、ある関数はあるサイトとあるサイトで使い、と使い回しもでたらめ、ここは奮起してfunctions.phpも整理するのだ、と決意します。

整理することが可能か

たくさんのお気に入り関数があったりします。テーマに特化した関数の改造もあります。サイトに応じて必要だったり不要だったりする関数もあります。複数のサイトを管理していますので、こうした関数がそれぞれサイトで入り乱れている状況に危機感を感じていました。ですのでこれも整理していきたいと思います。整理することが出来るのか。できます。こうします。

関数ファイルを複数用意してfunctions.phpに読み込んで使う

そうです。モジュール化してパーツとして読み込むのです。

読み込む方法はいくつかあって、ひとつは include です。他に require を使う方法もありますし、それ以外にもあるかもしれません。関数を分類に応じて複数ファイルに保存し、function.php に include または require で読み込みます。

include と require の違い

賢人の言葉を借りますと、includeはエラーが出ても処理を続行し、requre はエラーが出たら処理を止めるとのことです。

例えば、存在しないファイル、パスの間違ったファイルを読み込むように指定してしまった時に include はそのまま指定を無視して他の処理が続行しますが、requre では エラーが表示されウェブページのレンダリングを止めます。エラーがあってもお構いなしってのを選ぶか、エラーに気づきやすいほうを選ぶかの違いです。そういうふうに認識していいそうです。

書き方

functions.php の書き方は、関数がだーーーーっと繋がった書き方がされていることが多いですよね。これ初心者泣かせですね。私も何年も泣いていました。意味分からないんですもん。

何ですかこれ。

functions.phpもphpですから冒頭に

があって、そのあとはひたすら関数が続くんですよ。?> で閉じていないんですよ。どうやら、一つの関数がだーっと続いているだけのこういう書式の場合、閉じなくてもかってに閉じたことになるらしいんです。htmlの<p>と似たようなことですか?まあ、何しろ関数をだらだらと繋げて書いているのだと判れば少し進展です。

ただ一つの関数がだらだらだらーっと続くこの書き方、これ必須なのかどうなのか、必須なんでしょうか。例えば、途中で ?> で止めて、また<?php って始めてもいいんでしょうか。知りませんわかりません。駄目な気がします。

さてそんなわけで子テーマのフォルダ内に私は「lib」というフォルダを作りました。この中にfunctionsの部品を入れるのです。例えば部品の一つに「theme.php」と名付けました。ここには、twentysixteenというテーマが持つ特化した関数を書いています。

もちろん、このtheme.phpというのもfunctions.phpと同じような書き方をします。<?phpで始めて、途切れさせずだらだらと関数が続きます。関数それぞれの先頭に「//コメント」を必ず入れますね。ついでに文頭にも同じくコメントアウトで目次を作りました。目次作っておくと便利です。

これをfunctions.phpに読み込みます。

functions.phpにこう書きます

なんとこれでtheme.phpの内容がfunctions.phpに読み込まれ実行されるんです。これはイケる。

は、子テーマのフォルダ在処を示す関数です。パスっていうんでしょうか。子テーマ内に「lib」というフォルダを作ってtheme.phpを読み込みますから、上記のような書き方となります。

関数を繋げて書く難しい書き方なので、途中に「.」が入って、これは「繋げる」という意味ですが、こうして繋がった一行が子テーマの読み込むべきファイルを指定しているということですね。

同様にして、いくつかの関数ファイルを作ってfunctions.phpに読み込みました。functions.phpには読み込み以外の関数がありません。すっきりです。私の例ではこのような状態に。

私のfunctions.phpはこんなです(例)

この稿、functions.phpの整理について、それと、実際に試用するコードの実例なども交えて書いていこうとしていましたが、具体例については独立したポストにたほうがいいかもしれません。でもいくつか実例も出しておきましょうか。

利用している関数の例

どのサイトにも共通で使う自分必須項目ってのがあります。自分にとっての必須項目って意味です(そのままやがな)例えばこんなのがあります。

抜粋 excerpt の「…」をカスタマイズ 「続きを読む」にクラスを付ける

「続きを読む」で続きへジャンプしない

descriptionにタグを使えるようにする

内部リンクのピンバック無効

他にもいろいろありますが、これらがどのサイトだろうがどのテーマだろうが必須項目なのでして、こういうのを集めてinit.phpなんて格好を付けた名前にして読み込んでます。

他は、テーマに関する関数もあります。twentysixteenで用意された関数を変えたいときに使うパターンです。

親のテーマフォルダに「inc」というフォルダがあって、その中のtemplate-tag.phpやcustomizer.phpというファイルにも関数が仕込んであります。これらを改変するときは子テーマに「inc」フォルダを作って同じファイルを用意しても無駄です。これらはfunctions.phpで再定義するんですよ。知ってました?私は知りませんでしたが知りました。

そういうテーマに関する改変は私の場合theme.phpと名付けたファイルに集めました。

twentysixteen_entry_meta()を再定義

テンプレートに登場するメタ情報の関数、twentysixteen_entry_meta()を変更します。twentysixteen_entry_meta の中にはこれまた独自関数twentysixteen_entry_taxonomies()が使われていますので、これも改造します。以下はあくまで一例ですよ。

それから、「前へ」「次へ」のナビゲーションもtemplate-tagsで定義されているのですが、これを改造します。

[追記] これ勘違いでした。ナビゲーションの設定はfunctions.phoじゃなくてテンプレート.phpが受け持っていました。このカスタム関数はこれはこれで使いますが、通常は各テンプレートファイルの該当箇所を少し弄るだけで十分かと思います。

前へ、次へのポストメニュー カスタム

ヘッダーイメージ画像のサイズを変更

カスタマイザーで選択するヘッダー画像はサイズが固定されていますよね。これを変えます。これは親テーマ /inc/customizer.phpで定義されています。

メニューの説明を表示する

ダッシュボードからメニューを選んでメニューを設定しますよね、そのときメニュー項目にはオマケ表示があって「属性」とか「自分との関係」とか「説明」などがあります。この中で「説明」を書いたのですがテンプレートで表示する方法が判りません。調べました。なんと、メニューの説明を表示するのはたいそう難しいことでした。コアファイルの中の某かを丸ごとコピーして一部改変するんです。チルドサイトに実例があります。

・・・これについて書こうと思いましたが長くなりそうな上にややこしくて自分もまだ理解しきっていないのでまた別の機会があればと。

と、他にもありますがこのようなテーマファイルが独自に定義した関数を変更する場合に「theme.php」を作ってそれを読み込んでいるという話でした。

他にも、重要度が少し下がるカスタム関数、サイトごと独自に必要な関数、そういった分類ごとにphpファイルを作って、モジュールを組み込むようにfunctions.phpに読み込むという、何とも効率良さげなfunctions.phpの管理方法のお話でした。

かなりの長丁場になっております。でもまだ「最小限の」シリーズでした。この先大丈夫か、わし。

次は最小限といいながら最小限とは言い難いカスタマイズです。検索ボタンです。

WordPressに用意されているウィジェットの検索を使う限り、カスタマイズは不要です。でもやりました。それを次のページで書きます。次ページ、検索ボタンについてです。

広告
Twenty Sixteen カスタマイズ / 最小限度の改変
カテゴリーWordPressタグ
このエントリーをはてなブックマークに追加

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください