しろあじ備忘録

システム関係の備忘録。ザルのような記憶力なので、こうして書いておかないと忘れるのだよ。

【Wordpress】この箇所だけ見た目を変えたい。フィルターフックの利用

これまた忘れそうで、都度調べ直すのも何なので備忘録
フィルターフックを使ってWordpressのカスタマイズ

目次

Wordpressのサイトのデザインカスタマイズ。容易な範囲の線引き

Wordpressは簡単にテーマが変えられて、システム的なこと詳しく知らなくても容易にデザインの設定や記事投稿もできる
まあ、便利!
と、、、すべてがそうとは限らない。

ただ記事投稿だけなら良いのだが、ちょっとした「全体的なデザインは良いんだけど、この部分だけこうできないのかな」というあたりで
「簡単に設定画面で出来ること」と「そうではないもの」に分かれる。

仕事としてこの辺り頼まれた場合は、
ざっくりと前者と後者があることを先方に認識してもらう。

私の感覚がシステムよりなので、
「簡単に設定画面で出来ること」として、CSS調整 もその域になるが、
一般的には、CSS?なにそれ?のことが多い。

テーマやWordpressで用意された設定画面、、
外観のカスタマイズ画面というか、、そんな画面を指す。
項目の内容を見て、設定していけばいい。
そんなときは、
「このメニューのこの項目を変えればよいですよー」の一言回答で済んだり。。

でも、やりたいことすべてが設定画面の項目にあるわけではない。

テーマのアップデートなどに振り回されない調整を。そこでフィルターフック

下手にソースいじって、整合性崩したくない。
できるだけ他に影響を与えたくない。

CSSじゃ対応できない、、

そこで、便利なのがフィルターフック

カテゴリのアーカイブページのタイトルを調整したい

今回はカテゴリのアーカイブページでのタイトル
f:id:ramapipi:20200531110310p:plain
ここの「カテゴリ:」をなくしたい。
意外とこの箇所って、見逃されがちな気がする(私見

テーマによるが、今回の場合は、
wp-includes\general-template.php get_the_archive_title()
の内容がそのまま表示されている。

直接、このソースを触るのは厳禁。
ワードプレスなどのアップデートで書き換わる可能性があるからだ。

そこで、フィルターフックを使って、get_the_archive_title()の処理を調整する。

手順1:調整したい既存の関数にapply_filtersがあるか確認

wp-includes\general-template.php get_the_archive_title()

f:id:ramapipi:20200531111433p:plain


get_the_archive_titleについて apply_filters があるか調べる

f:id:ramapipi:20200531111552p:plain

今回はReturn の箇所にあった。

大抵、、Wordpressが用意した関数にはapply_filtersがある。

これがあれば、後述のadd_filterで設定したFunctionを組み込んであげるよ!という状態になっている。

apply_filtersが無い場合は、別の記事で書く予定

手順2 function.phpにやりたい処理をコーディング

apply_filtersを見ると、

	return apply_filters( 'get_the_archive_title', $title );

get_the_archive_title()の最後の行にあるから、$title という変数には、先ほどの例なら「カテゴリー: テストカテゴリ」が入った状態。

apply_filtersが呼ばれると、これから作成する関数が呼び出されるので、

「カテゴリー: テストカテゴリ」の文字列から、「カテゴリ:」を削除するというベタな処理を入れるとする。

その処理は使用しているテーマのfunction.phpで行うのが無難。
子テーマを使っているなら、子テーマのfunction.php
wordpress ダッシュボードの テーマの編集で行える。

//カテゴリアーカイブのタイトルの調整
function get_the_archive_title_custom($title) {
	$title = str_replace('カテゴリー:','',$title ) ;
    return  $title;
}

これだけではこの関数は発火しない。get_the_archive_titleと紐づけるため、
さらに

add_filter('get_the_archive_title', 'get_the_archive_title_custom');

を追加。get_the_archive_title_customの定義の上でも下でもよい。

そして再度表示させると、、

f:id:ramapipi:20200531114350p:plain

できたー。

まとめ と フックってそもそもなんだ

当たり前のようにフックと書いていたが、
既存の処理を崩さずに、、、でも、ちょっと私が作ったこの処理をついでにやってくれよー、
とフック、、、ハンガーのフックを想像しても良いかな。
処理という服がかかったハンガーを、
大元の処理のハンガーがいくつもぶら下がったハンガー掛けに対して、
「このハンガーもついでにおねがい!」と、フックをかけさせてもらう、、。


乱用すると、統一性のない洋服ばかりになるが、、着物や制服やドレスなど方向性が一致しないが、
そのハンガー掛けの方向性を損なわないものをフックすること。

沢山フックすると管理しきれないから、ここぞという時に絞った方が安心だ。

今回はテーマの編集画面でfunction.phpを編集した。
ftp接続して直接ファイルをいじることもできる。
その辺りも統一させておくと、安心。

f:id:ramapipi:20200531115820p:plain