何レコーディング?
はい それでは改めて学ぶアクションフックとフィルターフックワードプレスカスタマイズのポイントを押さえよう
ワードプレスランオンラインワークショップ始めていきたいと思います
今日はお集まりいただきまして ありがとうございます よろしくお願いします
はい ということで 今日はこちらの内容になります
アクションフックとフィルターフックっていうのが そもそもなあにというところから始まって
じゃあ どういうふうに書くのか どういうふうに使うのか
実際にワードプレイスで どんな実装になっているのか
というようなことを ご紹介していきたいと思います
目指としましたよ こんな感じ 福とは
なぜ福があるのか
そして今度は福の技術方法 どうやって書くのか
そして福の中に2種類ある アクションフックとフィルター福の違い
さらに福の利用方法っていうものを ご紹介して
じゃあ どこにそれを書いたらいいのか どういうふうに書くべきなのか
そのような話をし
よく皆さんもあると思うんですけど
WP 円球スクリプツを使って ファンクジョンズPHPになんかこういうのを書いて
テーマの中に CSSを読み込ませましょうねっていうのがあるじゃないですか
これね あので
私 諸学者向けのワードプレスの 講師のお仕事とかもさせていただくケースがあるので
その場合にここの部分で発書るんです パンクションズ php にとにかく今はわかんないと思うので
なんとなくゴニョゴニョっとこれを書いてください そうすればwp het の部分に css が読み込まれますよみたいに言うんですけども
今なんとなくコピペで済ましているって方は そういう方が多いんじゃないかなと思います 私もついついこのぐらい前まではそんな感じでした
これがなぜそうなってるのかっていうところについて 改めて考えてみたいと思います これが今日はわかるようになるはず
そしてアクションフックを使ったタグでの 設定の方法などなどを示したり
フィルターフックのタグを使って ちょっと応用してみたらこういうことができますよっていう内容をお伝えしたり
アクションフックフィルターフックつけるだけじゃなくて外すこともできますから 外し方をご紹介したりというような形で
最終的に特に所学の方は初めてで何となくでも雰囲気で ブックっていうものがあるんだなとか
そういう風になってたんだなみたいなものが少しでもわかって 今コビペで済まされてる方は
そういうことねみたいなことが少しでも一歩でも進めたら 今日はその価値があったんじゃないかなと思っております
先にお伝えすると今見えてる通り行動がめっちゃ出てきます そして
それを1時間半でわーって喋りますから あのきっと
途中すごい脳が疲れますそして わけはなくなるかもしれません
ただ今回はその試みですちょっとこういう難しめのものに挑戦してみようということでやってますので
ぜひ えーご協力いただいてご参加いただいて頑張って一緒に学んでいただければと思います
私も頑張りますお願いします
登録ができてるね大丈夫だね
はい では行きましょう まずFOOKとは そもそもなぜFOOKがあるのかっていうところから
話は進めていきたいと思います 資料の中において ここにちょいちょいURLがあります
皆さんもクリックいただくと こういうふうにリンクが開くかと思います
こちらはWordpressのデベロッパーリソーシーズという公式のドキュメントのURLが
それぞれ貼り付けられております で 日本語になってるところもあるんですけども
主に英語になっている部分がありますので 例えば こうやって右クリックから
日本語に翻訳ってやれば ある程度は読めますので この辺りは利用
いただいて 今後もいろいろのところで ドキュメントのURLを参照
としてURLを貼り付けているんですけども 何しろここが正ですかな
分からなくなったらここを見に行きゃいいんです ここには正しいことが
書いてあります アップデートがされてなくて ちょっと間違ってる
みたいなことあるかもしれませんけど 基本的にはここが正だと思って
いただいて間違いないかなと思いますので このサイトを見にくる癖を
つけていただくだけでも 全然いいんじゃないかなと思っております
で 服なんですけども 服っていうものがあるのがなぜか
ワードプレイスを利用する際に Core テーマ プラグインなど全てを
自作するわけではなく 今後もアップデートされる機能を使います
どういうことかっていうと 例えば Contact Form 7というプラグインを使います
例えば テーマとして2024を使います これだって この先にもアップデートがある可能性が高いですね
これまでもアップデートもありました これからもアップデートがあります そしてコアももちろんそうです
コアのアウトプレスについても ずっとアウトプレスはアップデートがあります
それなりについて 何か少しカスタマイズをしたい 何か自分ごのみに変更したい
お客さんの要望に合わせて 変更したいっていう時 改変したい場合に
に 直接そのファイルを改変してしまうと 次のアップデートの際には
もうそれは消えてしまうわけです 例えば プラグインの一部を改変した
コアの一部を改変して 動きとしては成功してよくなった
でも アップデートがきた アップデートがきたら その改変は
ご自身だけのオリジナルのカスタマイズ のために その部分が消えてしまう
上書きされて元に戻ってしまうって わけですね そこで活躍するのが
Fookという部分です Fookを利用することで
Fookが定義済みの箇所であれば 直接コードを外演することなく
Customizeが可能ですということになります
ここが これからちょっと順々に出てくるんだな
なんですけど Fookっていうのは
そもそもコアやテーマやプラグインの中において
その開発者 開発グループが このあたりは
ユーザーがCustomizeする可能性があるよなっていうことで
じゃあ ここには 服を埋めておこうっていう 最初から考慮があるわけです
で その考慮がある場所 つまり服が定義済みの箇所であれば
その服を利用して 加工道編集することができるという
そういう仕組みになっています あったね これもだんだん後で分かってくると思います
で どうかいうと 服を使わない場合 実装したい内容が決定する
例えばタイトルの一部を改編したい
で 改編したい 今度は見つけた
タイトルを出力する感想を見つけた
で それを直接直しちゃった
その時は良いけどもアップデート期は
元に戻っちゃうという形ですね
でも 服を使うと
さっきの内容を元にすると
実装したい内容がある
タイトルの一部を変更したい
改編したい場所を見つける
タイトルの出力の場所を見つけた
そこには服の定義があった
だとしたら服を利用して
外部からそのタイトルに対して
変更を加える
そうすると変更されて その時ももちろんいいですし
元のファイルがアップデートされたとしても そのファイルにフックが
フックの手裏が残っていれば 基本的には我々が後から作った
フックでのカスタマイズも 引き続き継続して適用されるので
その変更がずっと続くという 内容になります
大丈夫です こんな感じですけど
今概念だけしゃべりました
(笑)
はい
で 服はつけたり 外したり
同じところに服数つけたり
そういったことがどんどん可能なもの
ということになります
今 もう一回資料を貼ってきますね
後から来てくださった方がいるので
チャットの方に資料が書いております
えっと このワードプレスのコアでも
服を利用しています
そして後から取り付けたり 外したり 付け替えたり
そういったことが簡単にできるような仕組みになっています
イカのように1つの服に対して複数の関数が複数されていますというものがあります
ちょっとこれを見てみましょう
テーマを作ったことのある方は
はい、はい、はいって難しいんですけど
WPヘッドっていうのをヘッドタグ内に入れますね
ありがとうございます 手を挙げてくださってる方 ありがたい
WPヘッドって関数入れますね
実はWPヘッドっていう関数について Wordpressのコアでは
こんなにいろんなものが引っ掛かっています
これどういうことかっていうと
WPヘッドというフックの場所に対して
こんなにたくさんの機能が引っかけられてるようなイメージになります
例えばWPGenerateがちょっと分かりやすいと思うんですけど
WPって表示すると
バージョン情報が出るじゃないですか ヘッダー部分に
これってwp-generateっていう関数が動いてるからで
それがこのwp-headに引っ掛かってるから
それが出るっていう感じなんです
あとフィードのリンク RSSのリンクが出たり
さまざまなものですね もう 延期スクリプツっていうのがあるから
CSSが読み込まれたりっていう形で
このwp-headを
関数としてヘッドタグにテンプレート内に入れると
たくさんの出力がされますけども
それは実は このすべて復興元に作られているから
動くということになります
ですので 逆に このWPGネレーターをポイッと外すと
ヘッダー部分から Wordpressのバージョン番号が消える
消せるということにもなるわけです
このような形で Wordpressのコアも
後から外せるということも考慮して
わざわざ わざとハードコーディングで
その場に書くんじゃなくて
ユーザーさんがもしかしたら ここをカスタムしないかもしれないな
ということで 復興を使ってもともと 実装がされているというところも多くあります
はい じゃあ 続いて The Content これは本文を出力する関数です
はい 使ったことある人 はい
これ今 リアクションっていうのがあるんですよ きっと
そうです ありがとうございます
それで リアクションっていうところから 手を上げるっていうのがあるので
手をとかあるはずなんです それをやってください
で ザコンテントって本文を出力する場所なんですけども ここにもフィルター服があります
で この本文を基にして 何かしら 作業をたくさんたくさんした上で
本文として出力されるということになります 例えば このDo Short Codeっていうフィルター服
この関数が このザコンテントには 服されています なので 本文中に Short Code型で
技術があった場合にそのショートコードの中身が展開されて 何かしら別のものになります
例えばコンタクトフォームセムンってショートコードで ペッって貼るじゃないですか
であれがあのままの文字列じゃなくて それが展開されてフォームとして出てきますよね
それってこのZACKコンテンツに対してDoショートコードっていう服が付いてるかな
それを通ることでそのショートコードの技術がフォームに切り替わるという関数に変更されて
その部分が出力されるという形になります
オートPとかは Wordpressのエディター内で改良があったら
その部分をPタグで加工っていうものになってたりとか
そういった形のものがあります
このように様々なフィルターフックがコアでも利用されてますし
もちろんプラグインでも利用していますし
っていう形で利用されているんだなというふうに
まずはご理解ください
だんだん具体的になります
今はなんとなく「ふーんへー」っていう感じで大丈夫です
はい
えーと、今日こんな感じよ、今日こんな感じ
うーんと、なかなか大変じゃないかなと思っております
それも伝わります
ちなみにちょっとだけここの部分見てみましょうか
えーと、この
よいしょ
はい、こちら
これは普段全く触らないですね Wordpressのコアファイルの中に
WP AdminとかWP ContentとかWP Includesっていうものがあります
そしてWP Contentの中には Plug-inとかテーマっていうものが入ってるんですけども
この Includesっていうところの中において
Default FilterズっていうPHPがあります
で、ここの中にデフォルトで設定されているフィルター群がまとめて基本的には書かれています。
ここのところでももちろんフィルター使われているんですけども、 そしてここですね、WPヘッドのアクションにおいて
こんなにたくさんの機能が全部使われているという形になります。
で、この時に、じゃあもうこのさっきから言ってるバージョン番号ですね。
バージョン番号消す消さないがS用に適用できるかどうか、セキュリティ的に良いかどうかっていうのを話しは今はこれは省いてください。
似合ってしている人は正解です。
でもそれは今は話すべきことである程で
1回スキップします。
このコアのファイルなので、ここでコメントアウトすれば
まあこれはこれで動きます。
当然このWPジネレーターは外れます。
ただコアのファイルは次のアップデートが来た時に
当然デフォルトのフィルターは上書きされて
また元に戻ってしまいます。
なので、そうではなくて別の部分から
このフィルターを外すっていう技術をした方がいいよね
っていうような内容になります 今回 このように コアのファイルを見たり
プラグインのファイルの中身を見たり することをちょっとやってみたり
していきます なかなかそういう機会ないと思う
んで プログラマーのでない方は メンクラウドところがいっぱい
あると思います でも そこがちょっとでも面白いなと思っていただけ
たら この試みは大成功かなと思って いますので ぜひ一緒にお次い
いただければと思います では フィルターフック アクションフック
っていうのがあるんですけども その書き方を紹介していきたい
と思います ここに書いてある通り 後で話をします アクションフック
とフィルターフックっていう2種類の 服があるんですけども 基本的に
利用する場合の引数 パラメーターの 書き方は同じという形になります
アドアクション 感染にしろ アートフィルター 感染にしろ 引数としては
1234の引数を持てます 引数=パラメーターですね
そして ここには何があるかっていうと まずは 一番最初の第一引数において
FOOKNAME 利用したい定義の場所名を入力します どこの部分でこのフィルター
FOOKを使いたいかっていうものを まず設定します
次にCallback これは じゃあそこで何をしたいかっていうものを書きます
で Priority 次は優先順位です その先ほども見ていただいた通り
同じところでたくさんの服が動きますね こんな感じで動きますね
その時に じゃあこの子とこの子を 2つがあった場合にどっちを先に実行するべきなのか
それを決めるのが この第三引数です プライオリティ 優先順位というものになります
それからアセプトアーグメント アーグス これは 許容される引数の数です
1ですが ここの部分は より複雑になるので 一旦飛ばしましょう
結局飛ばすんかいって感じですけども なので さっき見たAd Action WP Head WP Generator
というものは何かというと こちらを見ると
WPヘッド第一引数が複数ネームで 利用したい関数の場所でしたね
ということはWPヘッドのタイミングで そして プライオリティの技術はないです
これは省略が可能だからです そして省略した場合に初期設定は
10になりますってことは 10番目の優先順位で そしてWPジェネレーター
このCallbackっていうのは実行したいことでしたね なので このWPGeneratorという
関数を実行してくださいというのが この命令の文章という形になります
伝わるかしら 今難しかったですね そしてこれを説明するのがこのドキュメント
です AddAction 関数について Wordpressはすべての関数について この
のように説明のドキュメントがあります そして ここにちゃんと書いてあります
アドアクションには 刊幕切りになっているので 1つ目 2つ目 3つ目 4つ目という
ふうに4つのパラメータ 引数がありますよ そしてディスクリプション
がありますと 日本語にしちゃいましょう アクションとは実行中の特定の
時点 または特定のイベントが発生した時に ワードプレスのコアが起動
するフックです プラグインは アクション APIを利用して これの
一つの以上の PHPの観測が実行する ようにできます これがややこしい
よね わかんにくいけどね で この日本語に戻すから戻さないと
次はわかりにくくなります ここに ちゃんとパラメーターの内容が
ちゃんと書いてあります まず 最初 フックネームストリングスって
ことはテキストで書いてください リクワイアド必須ですよ The name
of the action to art the call back to 要は ここの場所において call backの何か
しますよっていう場所を最初に決まりますよと
そしてcallback the callback to be run when the action is called
この部分で呼ばれた時にこの部分の機能が動きますよ
そしてプライオリティ読むのが大変なんで日本語にしちゃいましょう
特性のアクションに関連付けられた関数が実行される順序を指定するために使います
数が小さいほど先に実行され同じ優先度の関数はアクションに
追加された順序で実行されます。
デフォルトは10ですよ。そして、比数がありますよ。
デフォルトは1ですよっていう風になっています。
こっちからも実は読み出せることが理解することができて、
最初の2つについては何もなくこの変数名だけがありますが、
次のプライアリティについては、=10ってなってますね。
そして、このアセプターグスについては=1ってなってます。
この=何かってなってた場合には、これは初期値がある状態。
つまり入力をしない場合には この初期値が設定されるという内容になってます
そして この中身を見ると
ここの先に行くと 使い方だったりとか
実際のワードプレスの関数において どのように関数が書かれてるか
っていうものであったりとか 関連のタグであったりとか ユーザー
さんからの具体的にこういうふうに やったらいいんじゃないみたいな
内容とかがズラズラと出てきます 今 ちょっとここをコンマーカー
区ご紹介したんですけども このドキュメントといかに仲良く
なれるかっていうのが Wordpressの これから先 この復興を使って作業
するときの非常に大事なところ になると思います そしてもしこの
今ドキュメントがさっぱりわからんな っていう方は普段よく使われてる
関数 Wordpressのタグについての内容 を見られるとちょっとわかるん
じゃないかなと思います 例えば ZatTitleってありますね ZatTitleは記事の
タイトルを表示する関数ですけども その中身を見るともうちょっと
わかりやすいです Theタイトルにおいて もうちょっと慣れてきましたよね
Beforeっていう1つ目のパラメータ 引数と Afterっていう引数と Displayっていう
引数の3つの引数がありますよっていう ふうになってます こいつらなあに
っていうと まず最初の第一引数はBeforeで Markup to Prepend to theタイトル
つまり このタイトルの主力の前側に何かしらを出力します
そしてディフォルトはコロンコロンなんで
つまり この中身は何もないですから
何もないというものを表示するという形になってます
そしてAfter
まあBeforeがあってAfterだったらおかりやすいですよね
Markup to Append to
Ah
After Markup to Append toだタイトル
そのさあとに何かしらを表示します
ディフォルトはカラですよ
で Display
で Booleanっていうのは TrueかFalseのどちらかっていう設定になります これは
なんて読むのこれ weather とecoは return the title default true for echo つまりこれは
今 echoと returnっていう話をしました echoは表示する returnは返しとして帰り地
戻り地として表示はしないけども テキストの内容が書いてくるっていう
内容ですけども それをTrueかFalseかで設定できます TrueだとEcho
Falseにすると 返り地として 変数の中に 確認できるみたいな
ことがあるよっていう内容ですね そして InformationとしてはGet the
ZydeLoneを基にやってるでみたいな 内容が出てきます ソースコード
としては WordpressのWPIncredの中の ポストテンプレートの中に The title
っていうのが定義されてるよっていう のが出てきます
一番見るのは多分こっちですね これがわかりやすいですね
ユーザーコントリビュートノート ユーザーさんが貢献としてノート
のメモを書いてくれてるっていう ので 九年前のイグザンプルですけども
タイトルH3 都事H3っていうふうになってます
もうこれでわかりますよね タイトルを出力するときに
前側にH3ってきて 都事側にH3の都事になるので
つまりこのタイトルは H3で挟まれた状態で出力されるというふう
になるわけです
で それと今までH3ここに書いて タイトルしてH3って書いてたよりも
ちょっとスマートな感じじゃないですか っていうようなことができます
ので ぜひドキュメントの見方については 慣れていただけたらいいんじゃないかなと思います
はい もう慣れましたね
はい ごめんんですが 次に行きます この調子で進んでいくと
ここから先まだまだあるんで だんだん追いつかなくなるということが
わかってきました ただまあしあわないです今日もこれぐらいの感じで
いかないと多分伝わりにくいと思うので 精一杯頑張ります
で 行きますね次いきますよどんどん
いきますよ アクションフィックとフルターフィックの
違いを説明します 2つのフックの種類があるっていう
日にいました アクションフックはまず何か
アクションフックは受け取った情報 受け取った情報を受け取り
それを使って何かを実行し 何も返しません
言い換えるとアクションは何かに対して動作し
その後終了し 呼び出しフックに何も返しません
アクションはコードフローを中断して 何かを実行し
その後何も変更する通常のフローに戻ります
これドキュメントそのまま翻訳したんですけども
分かりにくいですよね。分かりにくいと思う。
でも、それはこれから説明するので、一回行きましょう。
でも、こういうことなんです。
なんか、アクションがあった時に、何も返さないけども、
その間に何か実行をポッてするって感じですね。
で、フィルターフックは、フィルターフックは受け取った情報を取得し、ここが違いますね。
何らかの方法で、何らかの方法で変更して返します。
いかゆると何かをフィルタリングし さらに使用できるようにフックで返します
フィルターは何かを特定の方法で変更 その変更が後でコードに使用するために使用されます
いうふうになってます この2つが
疑問であるんですが 実際に具体的な例を見ないとさっぱり分かんないと思うんで
そこの部分を見てみましょう 例えばWPヘッドってさっきからやってるのがありますね
これはアクションフックです フィルターフックかアクションフックがあります
これはアクションフックです それはなんでアクションフックなのっていうのは
これから説明します WPヘッド自体はただの実行のタイミングであり
そのタイミングで感想を実行させるために フックが利用されています
これがなかなかいいんで 私これすごいいいなって思って
今日はこれをまず説明するんですけども WPヘッドってワードプレイスのテーマを
作るときにピッタ張ると思うんですけども 当然それもこのようにファンクション
として宣言がされているので ワードプレスのコアの中で定義されています
そしてこんな紙を見ると wpヘッドの中って 何もないですDoAction wpヘッドって
書いてあるだけなんです
でさらにwpフッターフッターはですね 一番下のボディーとジタグより
前のとこに書いてくださいっていう wpフッターについても同じで
DoActionWPFutterっていう内容しか書いてありません。
このDoActionっていうふうに定義されているところが
ActionFookで利用できる定義のタイミングということになります。
なので、ちょっとこれうまくかけてないんで今ここに書くんですけども
DoActionに対して 交互するフィルターフック
アークションフックが AddActionっていうふうになります
なのでソースコードのどこかに
もともと開発者の人が WP Headっていうふうに書いてるわけですよね
これが DoAction これがつまり冒頭でお伝えした
定義されたフックのタイミングです
そしてこれに対して 何かしらアドアクションで
作業を落として復興するというふうになります なので
で 大地球数が場所でしたから WPヘッド
ヘッドのタイミングにおいて 独自関数
何かしらしたいことをやるというふうにして
やるのがアクションフックです
そしてこれは単純にもうここのタイミングで
ここで設定されたものが実行されるのみ
簡単です シンプルです これがアクションフックになります
後で具体例出すので 段々わかってくると思うので
今は へーって思っておいてください
で 続いてフィルターフックの場合
今度はフィルターフックの場合は 中身を取得します
ほんと
The contentはフィルターフックです
今 double B head は アクションフックって言いましたけども
The contentはフィルターフックです
で これの場合フィルター服には中身に本文があります
入力されたエディターの中にある本文ですね
で その本文の情報を受け取って その本文に対して
何かしらの影響を加えてから戻す これがフィルター服ということになります
なので先ほどからお伝えしてるとりどぅショートコードの部分では
the contentの中身を1回受け取って その中にショートコードの内容
があるかなっていうのを探してあったら そこの部分でそのショートコード
の中にある感想を実行して その結果を本分にもう一回含め
直してから返すということをします これがフィルターフックです
そして今こちらでお伝えした通り アクションにはdo actionという定義
場所がありましたけども FilterFook の場合は ApplyFiltersというものが
その定義の場所ということになります 今 ここを見ると TheContentっていう
コアのソースコードの中において ここですね TheContentは最終的にこの
中のコンテントをエコーするっていう 関数になってるんですけども その
コンテントに対してApply Filtersという ものがあります そして The Content
というところで このDol Content これが 本文の中身です Get The Contentで中身
取ってきてますからね この本文の中身を1回受けて それを
フィルターフックの場所として定義して ある これがApply Filters フィルター
フックでの場所ということになります なので ここでいうと Apply
フィルターズっていうところで定義されていて ここが The Contentっていう名前で定義しますと
で このときにフィルターフックの場合は必ず第2匹数にその1回送って もう一回帰ってくるっていう内容がありますので
そこの部分が今回の場合だとドルコンテント 本分っていうことになりますね
で これに対してドルコンテントっていうことになります
で これに対して Apply Filter について 復興をかける場合には Add Filterです
Filter っていうことにして 同じですね このApply Filterである
WPコンテンツのところにおいて 何かしら独自関数を実行します
で この時には この独自関数の中で このドルコンテンツ 本文の中身を受けてから
何かしら変更して返すというようなことをします
えっと これが全用ですただ今単純に脳内が火力なっただけだと思います
少なくとも僕はそうですでいやそんな概念はわかったから具体例見せてくれんと分からんねんっていうのが普通じゃないかなと思うので
具体例を一個ずつご紹介していきたいと思います
今ね ちょっと1回戻ってきますよ
アクションには2つがあります
で アクションフックのところで定義されてとか
Do Actionになってる
で そこに対して何かしたい場合は
Ad Actionとする
で フィルターフックには
Apply Filtersという定義がどこかにされている
それに対して何かしら影響を用意したい時には
Ad Filterを使う ここまでね
これとはとりあえず覚えておいてください
じゃあまず、ActionFookを利用してみましょう。
WPFooterっていうのもWP Headersと言うようにActionFookです。
今ね、こっち側でちょっと見せましたっけ?ここですね。
WPFooterはDoActionでWPFooterっていう定義化されてます。
つまりActionFookでここに対して何かしら実行を追加できるという内容になってます。
ですので
ここ
はい
今回はやりたいことは
WPFutterのタイミングで
隠しコメントとして
見つけた人は素敵っていう
コメントアウトして
HTMLのテキストを入れたいと思います
なんかあるじゃないですか
採用サイトとかで
ソースコードを見たら
よくこれを見つけましたね
あなたは採用ですよって
書いてあるやつみたいなやつ
あれを足しましょう
ということになります
なります 一般的な流れとしては まずその改編したい場所を見つける
というところから始めます どこで改編できるんかなって
ことで探していって 今回はもう最初から決まってますけど
WPフッターにDoAction WPフッターがある ここちょうどいいフックあるじゃないか
定義されてるじゃないか Lucky っていうふうになるわけです
そこに対して 隠しコメントを出力する 関数を作成しみ これまでにお伝え
したとおり 復興を設定するためには 独自関数が必要ですからね 独自
関数を設定します 独自関数は ファンクションという名前の後に
自分で任意で好きな名前をつければ つけられますね なので今回は
ファンクション My Hidden Messageという ふうにしました これは My Hidden Message
が実行された場合には この確保の中身が実行されてエコーで
見つけた人は素敵という HTMLの コメントアウトのタグで入った
テキストが出力されるという 非常にシンプルな関数です これに対して
復興を実施します AdActionでWPFutterのタイミングでこのMyHidMessageを
実行するというふうにするわけです こうするとWPFutterがある場所に
このテキストが入るという形になります これをちょっとやってみましょう
今私はもうやってあるはず 送信事態とランフック
はい ここですね なかったか消しちゃったか
消したか じゃあまあいいやかこう
これね ちょっとずつでも見てたら
わかりやすいと思う こうやって書きますよ
みたいなのもあった方がいいと思うので
ここに書いていきましょうか このまま書きますね
はい 博士メッセージ 余力 はい
そして パンクション これすごいよね
この最近のあのコパイロットさんね
マイヒドンメッセージとします
はい で えっとエコ
お なんか出た すごい
あ すごい これはすごい 賢い
でも違うねんな 待ってるけど
見つけた人は素敵 これでできました これが関数ですね 関数ができました
じゃあ これをフィルターフックします WP
アクションに My Hiddenメッセージを 関数フック はい こうですね
最近コメントしか書いてないんじゃないか っていうのは別の話なので ちょっと約しくなるんでやめましょう
今 こうしました WBフッタのタイミングで
毎日のメッセージの内容出力するというふうに設定しました
今 テーマは非常にシンプルなテストテーマが入っています
Index PHPしかないテーマです ここにWBフッタがあります
ので このサイトを見てみましょう
ちょっと待ってね
これ、このソースコードを見ると、あるかな?ありました。
はい、見つけた人は素敵っていうのが出ましたね。
ちょっとわかんないと思うので、これWPフッタは一旦コメントをしてみましょう。
そうすると、当然WPフッタはなくなるんで、当然それはなくなります。
WPフッタ自体がなくなりましたからね。
ボディと字の下にはこの内容がありません。
で、WPフッタを出力させてみると今ここの中に出てますと
じゃあ、今度それを復工でやったので、復工の部分
この復工を外してみます
これも復工外すとこれが、こっちの関数は開きましたけど
どこでも実行されてないんでされてない
この状態でリドードすると
あ、そうしてない?そうした?
出てる!なんで?怖い
これどこかにある?
いや
こっちがどこかにある?
待ってね
待っていいんですよ
置けないよね
プラグに止めてみる?
でも動いてるってことは私全然違うところを触ってる可能性が高い
よこれだ あっこっちにファンクションに書いているああああああ
あのえっと後で説明します えっと
はい消えましたね消えましたはい ok ok
これね、今、まずちょっと話がずれちゃうので、一旦これで理解ください。
ここまで伝わりました?
今こっちだけにしましょうか。
Function and PHPだけにしよう。
ここね、見つけた下はセキっていうのがあります。
リロードするとここに出ます。
Fookを外します。
Fookを外してリロードするとそれはなくなりますという形です。
OKです 伝わります? 今wpフッターに 服しました
分かんない人のために もうちょっと増やします 隠しメッセージ2
MyHealメッセージ2 私は素敵だ
これをもう一個かけましょう MyHealメッセージ2
2にしました これでフッターに対して 2つの
のフックをつけました これをリロードします
するとお腹立ち 見つけた人素敵だっていうのができました
優先順位がありました こっちを少ないほうが早いですから
1番と9999番にします そうすると順番が変わらはず
こことここになりました 今 実はこれは間が合いたのは
そのWPフッターの関数のアクションフックには その他にもたくさんのフックが仕込まれていて
あ 設定されていて その中で一番にしたんで 一番上に行ったから
これが一番上に行ったっていう形ですね はい こんな感じになります
次いきます
はい えーと
じゃあ次フィルターフックです これは今 アクションフックはもう
とてもシンプルなものだと思って いただいたらいいと思います
ではWFったのところで 別の関数ポコっと1個動かしただけ
例えばバナー追加したりとか 設定追加したりとか
そういう時にこういうのを使えます
それに対してフィルタフックは ベッド その何かを受けて
何かをするという内容になります
で どれをやろうかなと思ったんですけど
ちょっと分かりやすいのが このタイトルの変換が
もかりやすいかなと思ったんで そこをご紹介したいと思います
ワードプレスのタイトルって ピルターが付いてるから ちょっと
待ってくださいね これを外そう
デフォルトの状態でのワードプレスの タイトルってこういうふうになります
Fook-CatchCopyですよっていうふうに このサイト名-CatchCopyっていうふう
このタイトルとキャッチコピーの間が
ハイフンで設定されるようになっています
ここを縦棒にしたいぜっていう時がありますね
縦棒にしたい
縦棒にしたいんですけど
これの書き換えがどうしようもないじゃないですか
プラグミを入れたりすれば別ですけど
自分だけで買いたいぜってなった時に
これもフィルターフックの出番です
はいでその時にまずじゃあこのフィルターフックを利用して
コアが出力するタイトルのタグのセパレーターを
ハイフォンから縦棒に変えたい その時にはまず 回避したい場所を見つけてきます
タイトルタグのどっかに何かしら それがあるはずです それを見つけてくると
この辺はちょっと検索いただいても いいのかもしれません タイトルの
セパレーターとかいうふうに調べると きっと出てくると思います
この中のこの部分 Getタイトルの中において
separatorはここですね
このDolseparatorはApplyフィルターがありました
そしてDocumentTitleSeparatorという名前で
このハイフンだけが帰ってきてますよ
っていうふうになってます
そしてPilters, theSeparator, for theDocumentTitle
DocumentTitleを分割するときの
セパレーターをここでフィルターできますよっていうふうに書いてあります。
そしてドルセパレーターはドキュメントタイトルをセパレータスで デフォルトはハイフォン屋で
これがInlineドキュメント、ソースコード内でのドキュメントですね。
そしてここがありました。フィルターフックが開けられるところがありますね。
Apply Filtersがあるので、ここを元にこれを受けて別のものに変換しましょうっていうのを今からやります。
ですので 復興利用して 外部から変更を加えます
とまずは
何と 今のファンクションのこれですね
ファンクションとして まず自分の名前
My Document Title Separator
自分の Documentのタイトル セパレーターは
カスタマイズして独自関数にしますよ っていうふうにします
そして この第一引数
ここ 2位の名前でいいですけども
ここに置いて設定した引数に この… どこいった?
これが入ります この子が入ります
この部分がここに入ります なので ここ今横棒です 横棒
で 横棒をイコール縦棒に変換します これで縦棒に変換されました
で それをリターンします そうすると今までは どうなってたかっていうと
単純にこうなってて リターン取るセパレーターになってただけですから
横棒がここに入ってて そのまま横棒が書いてたんです
でも ここにフィルター復興を利用して セパレーターを縦棒にして返したので
この形を通ると必ず横棒だったものは 縦棒に変わりますという形になります
この独自関数ができましたから あとは同じですね
Apply Filterにおいては Add Filterですから その場所名
こちらで設定されている場所名において
Document Title Separator独自の関数名を設定し
このフィルターがかかることで ここが実行されて 横棒が縦棒になるという流れになります
ノートをリロードしてみると 今 横棒だったのが
タイトルが縦棒になるという形です
ですので これが何とでももうなります
星
星の絵文字あるかな
星ありますね これっていけるのかな
星にしました 今 セパレーター星にしたんで
リロードすると 多分 星になります
そうですね セパレーターが星になります
このように 復興を使うことで 今 Coreの部分には
一切手を加えずに セパレーターのこの 中身を変更することができました
さっきの 隠しテキストについても テーマの中身の内容
WPフッターの中身を触らずに 復興をつけることで
ソースコードの改変ができました
これらがフックのキモということになります
今日もとりあえず半分以上終わりました
伝えたいことは伝えました
でPHPの慣れてない方がきっと半分ぐらいいらっしゃったので
どうやって書くのみたいなことがあったかと思います
で今のように
なんとなくの形としては今みたいな形ですから
関数があって それに対して アクションとその関数を設定するという内容になりますって
いろんな書き方があります 例えば 先にこのアクションの内容を書いてから
その下に関数名を書くやり方で 関数名を書いてから アクションを書くやり方
あとは無名関数と呼ばれるんですけども この実は関数名を書かなくても
アドアクションでダブルペイントに対しても いきなりここ ファンクションって書いちゃって
その中に実行する内容を書くっていうやり方もあります。
で どれがいいかっていうのは
そのチームだったり皆さんの書き味とかでやっていただいたらいいんですが
無名関数については この関数名を決めなくていいというメリットはあるものの
後で この他で再利用できにくいとか
をかけた後でリメーブが今度できにくくなるとかっていうことがあるので
考慮が必要かなと思います 私はこの書き方が一番好きですね
この関数書いて どの道インラインでドキュメント書くので
ドキュメントがあって それに対して その下に
このフックが書かれるという書き方が 私は好きですという感じです
こんな感じ はい
で このカスタムの行動をどこに書くのかっていう話があります
これ どこに書くの?っていうのなんですけども
今 これ ファンクションズPHPに書きました
テーマの中の関数を書いていけるとこですね
そして 多くの場合 テーマのファンクションズPHPにこれを
技術すれば動きますみたいに 書かれていることが多いかと思います
ただ これも どんなテーマを使うかによります
ご自身で自作のテーマであれば、ファンクションズPHPに書きまくってもいいと思うんですけども、
例えば、よくよくように出回ってるような、
国産のテーマとかもいっぱいありますね。
有名のところでは、スエルとか、スノーモンキーとか、ライトニングとか。
そういったものを使うときって、
テーマのファンクションズPHPに書いても、結局、上書きされて消えちゃったりするじゃないですか。
じゃあ、個テーマを使おうかってなるんですけども、
もちろん、そのやり方もありますが、
プラグインとして対応するケースも いいかなと思います 独自にプラグインを作っちゃうという方法ですね
このFunctions PHPに書くPHPのコードと 独自のプラグインとしてここに書くコードっていうのは
基本的な役割としては一緒ですので 独自関数でそれがテーマ内でしか動かないっていう機能でないもので
限りは このFunctions PHPに書いたものをカットして この自分で作った
プラグイン側に貼り付けても動きます 動くはずです これも私知った
時 すごい目から動くことだったんですけど Wordpressってプログラミング
じゃないですか ここに見られないファイル いっぱいあるじゃないですか この
信じられないですけど 連携しているとこのファイルは全部読み込まれた上で動いてるんです
なので 実はテーマの中にあるファイルも プラグインの中にあるファイルも
読み込まれるファイルとしては 同じって ちょっと暴力的な言い方ですけど
同じなんですよ なので どこに書いてもいいし
どこに書いてもちょっとでも間違ったエラーになっちゃうって感じなんですね
なので その場所としては Functions PHPかもしか独自のプラグインに
書かれるのがいいんじゃないかなというふうに思っています。
で、いやいやプラグインなんて私全然作ったことないし、そんなのできないですよっていうのはわかります。
ただ実はプラグインってすごく簡単に作れます。
プラグインのBasicとプラグインのBasic Hedder Requirementsって言われるここにのけてますが、
プラグインディレクトリーにおいて、2位の名前のディレクトリーを作ります。
例えば、ホゲっていうフォルダを作ります。
普通にやってみましょうか。
あと新しいファイルをホゲ ホルダー 新しいフォルダー
ホゲで作りました これホゲプラグインのフォルダーですね
その中に同じ名前の ホルダー名と同じ名前のPHPを一個作ります
ファイル ホゲ.php はい 作りました まだ何も書いてないです
で 最初にPHPのコメントをとして ヘッダー部分を書きます
PHPで始めて このコメントアウトの中に プラグインネームコロンとしておいて
ここの中に好きなことを書きます ホゲ
まあホゲなんでね ホゲとしましょう
実はこれだけです
ね ちょっと信じにくいですよね 見てみましょう プラグインっていうところに行くと
ほら ホゲプラグインができました
あけなく出来上がります ここにFaith Railerを起こすと
大丈夫か 起こそう If
こんなのだったらもうダメだよね さすがに
で有効化すると ぶっ壊れる
もうダメだ 違う 違う 詰まって
有効化して ここまで大丈夫
で Ifで間違ったか聞き方する
そしたらこれでもう新たく成長になります これは
要はどこに書いてもそうなんですけども エラーが起こったところで止まるので
このプラグインがプラグインと指揮能してるということを理解できます
そしてここに書かれてますね
新タックスエラーでプラグインのところの 保険の保険PHPの6行目がおかしいから
サイト壊れてるぞっていうふうに言われてます
6行目これなんで 直して消して リロードすれば元に戻ってくるという形です
なのでこんな感じで 割とカジュアルにプラグイン作れますから
これはプラグインディレクトにあげるものじゃなくて
例えばクライアンドワークとかご自身のサイトで
自分のカスタマイズだけを溜めておくようなもの
そしてされる場合にもこういうやり方もいいんじゃないかなというふうに思っております
はい
(笑)
えーと
ごめんなさい 思ったより長い時間のちょっと
えーと
今1時間経ったんで
えーと 一旦ここで
中休憩というか
をしたいと思います
ここまでのところで 乾燥やら 何やら カニやら ありましたら
ちょっとコメントなり 売っていただいたら ありがたい
で あと30分しかないので なんとか終わる方向では頑張ります
一つの1個質問が来ましたね プラグミは少ない方が早いので
プラグミは入れずに ファンクションのPHPに書くよという
解説記事を見かけます 結局 見込んでるのは同じ気がします
プラグミもたくさん入れると ファンクションのPHPに
たくさん書くのと速度にそんな感じ なるものですか
めちゃくちゃいい質問ですね 今 説明した通りです
どこに書こうが PHPのファイルは通ります
同じ処理を同じように実行する のなら どっちでも一緒です きっと
いや微妙に下がるかどうか分かん ないですけど
そんなミニ見えた大きな差には ならないと思います
そして プラグインも1個の技術でも
例えば1000秒待ってから動いてね っていう技術があったら
1000秒動かないわけじゃないですか もしくは データメースにめちゃめちゃ
書き込みまくってから何かしてねっていう プラグインが1個あったら
それはそれでも重いです それを PHPファイルとして
Function's PHPに書いたところで 重い処理は重い処理です
全ては関数の集まりなので その関数の処理の量ということ
になりますから プラグインの数で重くなるっていうのは
大きな間違いというふうに 考えていただいていいかと思います
もちろんその 全部のプラグインが共通の重さを持っており
どのプラグインも全く同じ負荷がかかるものだとしたら
プラグインは少ないほうがいいですよ
でもそうじゃないのでデパートみたいに
大きいプラグインもあれば
本当は端発の機能だけのプラグインもありますし
今みたいに私のこのプラグイン
名前書いただけのプラグインですから
このプラグイン1000個入れたって
別にそんな変わんないと思います
いや1000個も入れたら変わるかな
そんなのどうでもいいですけど
ので そんな感じです 優勝で購入したテーマで元々設定
されている独自の服を使って カスタマイした場合 どのような
優勝服があるかは 効率的に調べる方法 なだがあれば教えていただき
たいです ドキュメントが準備されてる ケースが多いですけど プラグイン
側のサイトにサポートとして 最近 のは服が割と準備されてるケース
が多いですけど もうない場合は自分 で調べるしかないですね ダュー
アクション 今のDo ActionとApply Filter を基にして 検索して そこから
やっていくしかないです 僕たちも たまにあります ここカスタマイズ
したいね 今の手順で言うところの 実装したい内容は決まるじゃない
すか そしたら そこの何かしら出力されているところに対して
何か手を加えたいっていうことだった 思うんですよね そしたら優勝のプラグ
人種のテーマにしろ その出力されている 高度の部分をまず探しにきます
そこで関数が使われたり クラスが使われたり いろんなことがあるんですけども
そこに対して 服があるかどうかを まず見つけることがポイントですって
服がない ダメだってなります ない場合は
で ある場合は助かるってなります
そこからカスタマイズしていく っていう感じですね
服がない場合は もし連絡が取れたり サポートがあるところだったら
ここに服つけてくれないかなって お願いするのはとてもいい仕事だと思います
とてもいいオーダーだと思います
ユーザーさんからの声で 服つけてくれって言われて
プラグイン作者で服つけんの 嫌だなと思う人は
そんなにいないんじゃないかなと思います
もちろん場所にもよりますけども
なので そういうふうに考えていただいたら
いいんじゃないかなと思います
よし ちょっと反応もいただけたんで
次いきます まだまだあるんですよ
で そろそろ爆発してると思うんで
今日 今でもいっぱいいっぱいですよ
ここから先はなんとなくそんな感じ なのかっていうふうに気づいて
考えて 気に流してもらっても大丈夫 です もう負荷が高すぎると思う
ので はい ここから先ちょっと進みましょう
改めてWP円球スクリプトについて 考えてみましょう 円球スクリプ
2ですね CSSなど読み込む際に直接
Header PHPに書くというのではなくて ファンクションずPHPから読み込む
ようにしましょうっていう内容を 見にすることがあるかと思います
ありますね こちらもアクション服になっています
じゃあそれを見てみましょう こういうふうにやれっていうふうに
さっきボート言いましたね
Add Action WP 延久スクリプツ 前延久スクリプツ
なるほどと
これがちょっとわかってきましたね
この延久スクリプツのタイミングで
前延久スクリプツをやるんだなっていうのがわかります
そしてこの中ね
この前延久スクリプツが
このWP 延久スタイル
もう延久延久ってますけども
それを使って
関数として設定したCSZを読み込んでるという形になります
なるほど なるほど という形ですね
で つまり この ここのタイミングで
これが実行されてるということまでは わかりました
で じゃあ このWP延期スクリプツは どこにあるねんということを
探っていきたいと思います
探っていきましたよ 昨日
Do Action 延期スクリプツっていうのが まああるわけですよね
絶対 これAd Actionでしたから
つまりDoActionがどこかにあるはず
じゃあこのDoActionはどこにあるかっていうのを調べると
WP IncludeのScriptloader.phpの中に技術がありました
WP EncuScript2の関数の中において
DoWP EncuScript2というのがありましたと
じゃあこの内容のWP EncuScript2は
どこで実行されてるかっていうとなんとここでした
さっきの見たやつですね
WPHeadに対して
フックされて これが動くという形になってます
22フックがかかってるって感じです
WPフックにWP円球スクリプツが 動かされて
WP円球スクリプツの中に Do WP円球スクリプツがあって
その中で我々のものが動くって感じです
なので テンプレート側からいくとですよ
本当 ここのね
本当 あっ これは何言ってんだかってなると思うんで
僕も何言ってるか分からなくなってくると思います
これWPヘッドがありますと ありました
で WPヘッドの中でDoActionのWPヘッドが動きます そうでしたね
これはアクションでした
で WPヘッドに服のかかってるものが動きます
で その中にWPヘッドに対してWPAnqscript2っていうものが引っかかってます
で やっとここでこれが実行されます
WPAnqscriptが実行されました
じゃあこの実行された中で何がどうなってるかというと
Do、Action、WP、NQ、Scrippsが動きます
つまりここにフックがかかっているものが動きます
で、このWP、NQ、Scrippsに対して
今自分たちで定義した
MyNQ、Scrippsが動きます
MyNQ、Styleが動きます
で、その中でやっと
このMyNQ、Styleが実行されますという形ですね
で、その中でWP、NQ、Styleが入ってたので
やっとここの関数が動いて このWPヘッドのタイミングだったので
このWPユスタイルが CSSをここに読み込ますという流れになります
はい わかったような わからないような回答です
えーと いや エコシですね
こんなことなら やっぱり直接書いた方がいいかもとも思われるかもしれません
ただ なぜこうするのかっていうのは明確に理由があります
Wordpressって自分で作ったテーマのCSSやJavaScriptだけじゃなくて、
例えばフォームだったり、例えばスライダーだったり、
様々なプラグインを入れたときに、そのプラグインたちもCSSやJavaScriptを使いますね。
それらをヘッダーの中で読み込ませたいということが出てきます。
なので、自分だけで作ってた場合はヘッダーに直接書いてもいいんですけども、
他社が作った機能と合わせる場合に、
共通のルールで CSSやJavaScriptを読み込んだほうが 依存関係とか この CSSよりも絶対後に読み込みたいのに
それができないとかいうことがなくなって 同じの読み込ん
例えばJQuery全部のプラグインが読みてるんで 5個JQuery読み込んでるとかありえないじゃないですか
っていう重複を回避するなど こういったことを共通のルールとしてやるために
このお差法に乗って CSSやJavaScriptを読み込むという形になります
少なくともテーマやプラグインを開発していて 公式のディレクトにアプロードする際に
CSS、JavaScriptの読み込みについては この服の利用が必須になります
っていないと テストに落ちる感じですね
ということで このFookにしてFookにして
その中で読み込まれて 関数が実行されて動いてるんだな
みたいなことを なんとなく理解いただければと思います
ちょっと余談なんですけど 円球スクリプツ以外にも実は
円球ブロックアセッツとか 円球ブロックエディターアセッツ
っていうのがあります このWP円球スクリプツって
フロント側 今WPヘッドで発火して動いたってことは
表面側 表示画面側でしか動かないんですよ
さっこんでブロックエディターになってて CSS JavaScriptで近しいものを
管理画面側でも読み込まないと 同じような見栄えでブロック編集ができない
という問題がありますよね そこで 延休ブロックアセッツっていうのは
フロント側も編集画面側も同時に読み込まれるタイプのフックです
その他にも延休ブロックエディターセッツは ブロックのエディターのところで読み込まれる
CSSとかになっています 詳しくはですね このあたり何をどう使うべきかっていうのは
われらがヒーロー 浜野さん コントリベルトすごい頑張ってる浜野さんの記事とか
あとそれを最新の状態で更新されてる内容としてはこちらにありますので
このあたりを読んでください ということでした
最後のパートに行きますけど
いいですか?
行きますよ
行くとこまで取りやすいきますね
もう気失ってる人がいるかもしれません
大丈夫ですか?
ちょっと一回運動しますか?大丈夫ですか?
はい
そして今更に話はちょっとややこしくなります
ここまで分かりやすさを重視して
テーマで利用されているフックについて書きました
アクションフックにしろ フィルターフックにしろ そのテーマ内で
例えばWPヘッドとか WPフッターとか
タイトルのセパレーターの部分とかっていうふうに
わりとメイバーAとして わかりやすいところとの
フックをご紹介してきました
ただ実はWordpressでは リクエスト実行時
要はWordpressが何かしらで動くときに 様々なフックがあります
んと どれぐらいフックがあるかっていうと
ここからMU Plug-in Road-itから始まって レジスター タクソノミ レジスター
ポストタイプ Plug-in Road-itみたいな 何かのタイミングですね 例えば
これはBefore the theme of the road-it テーマが読み込まれる前に動く
やつとか After the theme of the road-it これは テーマが読み込まれた後に
動くとか イニット ウィジェット イニット こんな感じですね ずーっとずーっと
英雄スクリプスここにありましたね ずーっとずーっとこの順序立てて
動きます その他にもさまざまなタイミングでさまざまなアクション
が動きます というように今までのって例えばWPヘッダーのタイミング
で動きますって なんとなくここの表示されたタイミングで動く
っていうようなイメージだったじゃないですか でも Wordpressってアプリケーション
なので 最初にIndex PHPから始まるんです Wordpressで何かしらの言われる
アクセスしたら必ずIndex PHPに行って ここからWPブログヘッダーに行って
日が暮れるんでこれじゃはいいません けども という処理がずーっとずーっと
行われていくんです WPヘッダーに行って そしたらWPロードに行ってみたい
ないな 最終的にどこかの何かしら いろんなところを通って テンプレート
を見たり テーマを見たり プラグミを見たりもして 最終的に出力
されるということで この表示される 前までも もしくはリクエストの途中
でも 様々なところで 様々な処理 が行われるんですね その途中に
途中にも アクションフックがある ケースがあります 例えば After theme
セットアップってDo Action After Themaセットアップは ここですねwpセッティングス
っていうところで出てきますので このように 表示する前段階においても
さまざまなとこに服があります アクションタグの服ですね
で After このあたりのものを利用することで デフォルトの使用 ワードプレス
のデフォルトの設定に対して 何かしら 働きかけて変更することが
できます 例えばプリゲットポスツっていうのが
ありますけども これを利用すると このタイミングでメインクエリに
対して改変ができます メインクエリっていうのは記事を
表示するときに 動く基本的なルールで ワードプレスの初期設定だった
りするものなんですけども 例えば ワードプレスの設定の表示設定
において ここで10件っていうのがありますね これは1ページに表示する
最大の件数です ここに決められたものが初期設定となって どの投稿タイプでも
基本的には どのタクソのみでも この10件の表示ということになります
ただ このプリゲットポストのところで 関数を設定することで この場合だと
クエリーがいずカテゴリーだったら つまり カテゴリーの一覧だった場合には
ポッツーパーページを20件にしろ みたいな設定の変更ができます
これは今のこの表示設定の数字の変更とは 関係なくこのソースコード上で
強制的にカテゴリーの1台においては 1ページあたりの表情20件にしよう
というカスタマイズです その他にも 投稿タイプを追加しましょうって
ありますね プラグインダと カスタムポスタイプUIっていう
もので設定できますけども それを プラグインドして独自に書いたり
Function's PHPからも投稿タイプや カスタムタクソのみは追加できます
そのようなときは このイニットのタイミングで
自分の感想を設定し そこに置いて レジスターポスタイプ
っていうものを設定するて この中身に置いて
かさむ投稿タイプの内容を どんどん書いていくと
このイニットのフックのタイミングで これが動き
投稿タイプを1個追加された状態で ワードプレスが起動していく
というようなことができます
非常にプログラムが ブルーな感じになってきたでしょ
今までは表示する一部を変えるだけだったのが
Wordpressの機能自身を設定したり変更する時にも
このアクションフックが使えるということです
で その1連の 例えば表示するまでとか
画面がロードされるまでということではなくて
特定の作業の部パートにおいて 動くフックっていうのもあります
例えばDeleteUserっていう服があります
これはユーザーがデリートされた時だけ動くアクションフックです
ユーザーを追加したり削除したりしますね
このユーザーの中から
ユーザー複数作れますから このユーザーを追加した後で
削除する際に動くのがデリートユーザーです
で MyDeleteUserっていう関数を使って
その時にユーザーIDが受けられますから
このユーザーIDを受けておいて
今これ何してるかっていうと
消したユーザーさんに消すぎり切り前にメールを送っています
「You are bringing deleted」
「Is the bleeding deleted right now?」みたいな形で
あなたのアカウントは消えますっていうことをメールで送るということを
このDelete userのタイミングでするというようなことがカスタマイズで可能です
これは例えばCREATE userの時もありますし
Save postみたいな時もありますし
プラグインアクティベートとか たくさん 多くさんみんなに出しとか
さまざまな部分で その状態になったときに
何かしらをするというようなことができます
例えば お問い合わせが届いたら それをスプレイドシートに書き込むとか
記事が投稿されたら メールで通知をするようにするとか
そのような形の 復刻も利用が可能です
このように 復刻を知れば知るほど アイデアシーンで
ワードプレスはWebアプリケーションとしての可能性を発揮するはずです
というふうに書きました
なんか このタイミングでは
「あ、そういうふうにも使えるのね」
っていうふうに思っていただけたらと思いますし
まずは想像してみるといいと思います
例えば 投稿したタイミングでTwitterで
つぶやくみたいなのが昔あったじゃないですか
今Xで投稿するかな
そういうのも じゃあ 投稿をセーブして
公開されたタイミングと ステータスが
下書きから公開になったタイミングを
アクションにして その時に
その時のタイトルとURLを APIKUで TwitterXに投げる
そしたら投稿できるみたいなふうになって
じゃあそれはアクションフックと独自関数で実装できるよね
みたいなふうになっていくわけです
これがアクションフックの応用というか 作業ということになります
そしてフィルタンフックの場合もちょっと応用を 伝えておきましょう
例えばBodyclassっていうものがあります
ボディクラスは これはシンプルな内容ですけどね
ボディにおいて 特定のクラスを ボロボロボロと出してくれるものです
ただ その中において 固定ページは ページっていうものが確か出るのかな
ちょっとやってみましょうか
body class
body class とやると ここでページを見て 公開しておくと
公開して表示すると
ここですね ページテンプレートデフォルト ページ ID 125番 ログインアドミンバー
カスタマイルサポートっていうふうに出ます このように URLごとに応じて
そのポストタイプやポストタイプの ID を含めたものをクラスに出すっていう
ものが Body Classっていう関数の機能です ただ この中に固定ページのスラッグ
がないんですよね なんかしら特定のページだけ CSS当てて
ちょっと変更したいぜっていう時に このID番号で設定するのってちょっと
良くなくて それは開発環境と本番環境でIDが
ずれることもありますし そうすると CSSが合わないみたいな
ことが出てくるわけですよね なので 固定ページに設定した
スラグを元に Body Classがあるといいな というふうに考えます そこで
対応するのがこの Body Classの Add Filterですね
Body Classには Applix Filterが付いているので
この特において Add Slugという Body Class
というふうな感想を独自に作りました
要は Slugを Body Classに達せっていう感想ですね
そしてこの Clashies これが配列形式で取得できますので
Body Classの中身のズラズラズラって出ているものが
ここに 開列として入ります なので もしも イズページ 固定ページの時だったら
その中身のポストのオブジェクトを取ってきて その中身からポストのスラッグを取り出し
ページ配布というものとくっつけて この開列の中に返してあげる そうすると
今までの開列にプラスして このボディクラスが追加されたので
それを介してあげると 固定ページの時だけは
スラッグ名が一緒に追加されるという 内容になります
この辺りはもうだんだんそういうのが
意識とか発想として思いつくようになります
これワンチャン こういうふうに足したら
いけんじゃねみたいなものが 思いつくようになります
あとはこういうこともできます
The Titleのフィルターを利用して 投稿記事で
投稿日が閲覧した日よりも7回以内だった時 つまり比較的新しい記事だった場合に
タイトルなどに入をつけるっていうものですね この場合は The Titleのフィルター復興を使います
The Titleには引数がいくつか余分に取れるんですね
タイトルの本文とあとIDも取れるので ここからやっていきます
まず記事のIDが取れることから 記事のオブジェクトを取ってきて
それがもし投稿じゃなかったら もうそのままタイトルだけ返して終わり
で 投稿だった場合には その投稿の日付を取ってきて
今の日付を取って 投稿の日付を今の日付から引き算したとして
これが7よりも小さかったら つまり最近の投稿だったらってことですね
だったらこのドルタイトル 既存のドルタイトルに
追加する形で このスパンクラス ニューポスト ニューっていうものを付けよう
そしてそれを返しちゃいっていう形ですね
大丈夫です これね 伝わんなくていいです
でも伝わる人には伝わってます そしてこういう仕事をしています
はい、でも、これも慣れです。私も最初、こんな意味分かんなかったです。こんなのどうなってんのって思いました。
はい、でも、このようにしています。言葉としてなんとなく伝わりますかね。
タイトルの情報を取ってきた時に、記事の情報とタイトルが取れるので、その記事の情報から記事の投稿日を取ってきて、今日の投稿日を取ってきて、それと、
見比べて何かいないだったら入をつけてから返す そうじゃない場合にはただタイトルが変えるだけなので普通のタイトルになるという形になります
もとともわかりやすいので言うと X-AptLengs これはバスイブンの文字数です これシンプルですね
元々の初期設定が何文字か別のものになっていますけど それに対して カスタム
ExpertLengs エキサープトレンプスっていうふうにして このLengsを120としても書いちゃう
っていうふうにすると 何であれ120文字って 返すというふうになります
こんな感じの設定も可能です というように 今 わかりますかね
アダークションのほうは何かしらのタイミング ポンポンポンポンってあるタイミングの何かに
新しいものを入って付け加える それに対してフィルタ服のほうはポンポンってきた時に
その時に情報を受け取って それに何かしらを書き加えたり何かしらを足したり
何かしらを引いたりしてからもう一回返してあげる この違いがアクションフクとフィルタ服の違いということになります
最後に このフィルター外すこともできます
デフォルトで足されているフィルターフック アクションフックを外すこともできますし
特定のタイミングで自分自身で外すこともできます その時にはRemoveフィルターでものを使います
で 書き方は同じですね その場所と外したい内容 そして それのPriorityっていうものを書きます
これも、第3期数の数を揃える必要がありますが、わかりやすい感じですね。
ただ、このフィルターを外す場合にも、外してるのに外れないなぁっていうことがよくあります。
これは、フィルターをしたタイミングと外すタイミングがおかしくなると動かなくなるってやつです。
例えばこの3番目のタイミングで 何かしらアクションフックが
フックですね フックが追加されているのに ここのタイミングでフックされているものを
ここのタイミングで発動しても まだここではついてないのを外して
結局ここでつけているので外れてないように見えるということが起こります なので
もしここでつけたものは ここより先の部分 例えばプリゲットポストとかで外さないと外れないという内容になります
ので これもややこしいんですけども このタイミングで外したいぜってなったら
このリムーブ用の関数を作って アクションフックのタイミングの部分で動かし
その中で外したいものを外す みたいなこともやります
はい えーと
ということで
以上です はい
あのまとめです 初めまして初めての方は
もうなんとなくてもとりあえず雰囲気さえ
掴んでいただいたらいいんじゃないかなと思っています
そしてあのドキュメントの例や
えーとその他にも今フックっていう概念は
理解いただけたはずなんで
じゃあなんかこう調べた時にそのソースコード
これを使うとできますよっていうのが
出た時に これ 服使ってんじゃんっていうのがわかるようなことが
これから出てきたら嬉しいなと思います そして それをということは
例えば今 これ120は500にしたら 500文字になるなとか
さっきの縦棒横棒 星にしたら星になるなとか
ニューって書いてあるところは じゃあ これをオールドに変更することも
できるなみたいに 既存のもののカスタマイズが
少しずつでもできるようになっていくと 段々わかってくるかと思いますので
ぜひそんな感じで慣れていただいたらと思います そしてもうちょっとレベルアップされた方は
これから何かしらワードプレスの中で カスタマイズしたいぜっていうものが出てきた時に
まずはフィルター服があるかどうか アクションフックがあるかどうかっていうところで
該当箇所のソースコードを見に行って このDo ActionやApply Filterという
フックの定義があるかどうかを調べるところから始め出たら きっとそれはレベルアップになるかなと思います
ということで ぜひ この複合ですね これから使ってみていただければと思いますということで
ちょうどお時間となりましたので ちょっと最後のおかけ足になって
置いてくごりな方がいらっしゃったかもしれませんが ソースコードの話なんで
書いてる間に だんだん 脳内のショートカットができていくタグイドもんです ぜひ作業をチャレンジしてみていただければと思います
ということで一旦ここまでが本編ということになりました ありがとうございます
はいで質問が来ているかどうかを見てみましょう えっと
ありがとうございます質問を えっと
最近うっとこれはこれは答えたあこれねえ 確かね答えたか答えてないかを選べれるはずだから
これは答えた これも答えた 次からですね
普段テーマを変更しても 継続していつきちゃいたい機能はプラグイン
にしています 奥さんはどのような感じで プラグインとテーマのどっちに
技術するかを決めていますか 最近もテーマ側には書かないですね
プラグイン側に書くことがほとんどです ただお仕事でやっているときに
もともとそのテーマ内にファンクションが書かれているケースで
それを引き継いた場合には そのままそれを使うケースもありますが
基本的にはカスタム用のプラグインを使って
そこからやるということが私の場合は多いです
セーブフックを利用する場合に無限ループの発生がある場合があるので
必要ときました
はい そうですね
他にも注意しないといけない場合がありますか
あの はい えっと これセーブフックのタイミングで
何かを動かすっていうものがあった時に その何かを動かすが またセーブフックを
動かすケースがあって そうすると 一生終わんないなみたいなことになることがあるんですよね
で セーブフックは特にたくさんのプラグインや機能がコアでも
服されているところなので 注意が必要かなと思います
他にも注意しないといけないとか セーブフック
セーブポスト以外を使うみたいなのも 同じ機能でもいいかなというふうに思いますね
なんでしょう ステータスが変わったとかっていうことは
チェックしてやるとかということもありますし 特定のセータスになったらそっちにするみたいなことで
動く服もあるので、生物ポスト以外の服もとりあえず確認してからやるみたいなことはありそうです。
あとは、生物服別に生地が保存される時じゃなくて自動保存の時とか、あとは、何だろうな。
なんかいろんなところで動くんですよ。
あ、それも生物服動くんだみたいな、生物ポスト動くんだみたいなことがあるので、
あのすごい条件をきっちりきっちり除外して、その外頭の狙った場所でしか動かないようにしないといけないというので、
ちょっと難しかったり 面倒が多い服だなという印象です
どこで何を加えて外したのか どうやって管理していますか
そうですね この辺もプラグインで 見通しが立ちやすいように
例えば外すプラグインを 一つのファイルにまとめとくとか
まあ 昨日ごとにファイルを分け分けするとか
っていうようなことが いいんじゃないかなと思います
テーマ内に書かれているの そのまま外で管理できるように
プラグインにできますか
テーマ内に書かれているものを そのままに外で管理できるようにプラグにできますか
もし言われている目的がどういうことかがちょっとわかんないですけど
なんだろうな
テーマに書かれているものは 基本テーマのままでいいはずなんです
ご自身で作られてない既存の何かしら どなたかが提供してくださったテーマであれば
それのアップデートがあるはずですから そこの部分を変更するのはよくないか
そのままそれをボコッと外しちゃって 別のプラグにすることには
あまり意味が感じられないかなと思います
その服が使える範疇のものを外で管理するというのが
今回のお勧めした内容ということになりますね
ありがとうございます コメント テーマを触るよりも イズリよりも プラグイン
で作る方が簡単で キラクに 外しやすいという気持ち そうですね
なんか そういったところは 自分の 少なくとも そこの部分は自分の
書いたものとしてありますからね そこの部分は理解しやすいところ
があるのかなと思います この辺もでも 本当に慣れとかもあります
だんだん だんだん そういうのが上手になっていくのかなと思います
本当に人気のテーマ作者さんとか
上手なエンジニアさんの作業を見てみると
本当に綺麗にソースコードが分かれてたり
関数もしっかり作られてたりってことがあって
そういうのって経験速も非常に重要なところだと思いますし
もし先輩の人とか
GitHubとかリポジトリーが見れるとかいろいろながあったら
既存のテーマや既存のプラグインで
その辺りを参考にして
カスタマイズしていただいていくと
いいんじゃないかなと思います
はい、ということで一応変動もさせていただきました
一旦ここで撮影は終了させていただきたいと思います
一応本編としてはこちらで終了となりますので
本日遅くまでご参加いただきました
ありがとうございました
皆さんが少しでも福空に対して
何でしょうね
今までよりは距離が近づいたなというふうに感じていただけたら幸いです
ありがとうございました
またこれからもラーのワークショップはやってますので
ぜひご参加いただければと思います。 ありがとうございました。失礼します。
レコーディングを止めます。