[WP] WordPressの機能/表示を追加/変更するには,どのファイルにコードを書くの? 今は昔![2023/11/11]

アイキャッチ : DALL:E3

今は昔、

WordPressにはテーマを使用すれば機能や表示を変えることができます。選んだテーマでは,自分の思うようになっていないことが殆どでしょう。そんな時は,あるファイルにコードを追加して機能追加や表示を好みのものに変えることもできます.

さて,何を知らなければならないでしょうか.

WordPressのテーマ: Twenty Twentyまでは,「content.php」が存在していました. でも,どうやらTwenty Twenty Oneからは,「content.php」が存在しないようです.

最近のテーマ(新しいWordPress)では,関数をフックして機能を追加するのがトレンドらしい.従って,以下の「関わるファイルたち」に示したphpファイルが存在しないテーマが最近のテーマのトレンド構造となっている・・・らいしい.

フックのタイミング

  • the_title()が実行されたタイミング
  • wp_head()が実行されたタイミング
  • 記事が公開されたタイミング

関わるファイルたち

どのファイルの内容を編集すればよいか.WordPressでは,固定ページ,投稿ページがあります.また,投稿ページは,カテゴリとタグで分類できるようになっています.固定ベージを表示させる場合は,page.phpというファイルが使用されます.投稿ページを表示させる場合は,singular.phpというファイルが使用されます.カテゴリ別に表示させる場合,content.phpというファイルが使用されます.タグ別に表示させる場合は,archive.phpというファイルが使用されます.以上の構造は,テーマによって異なることもあるようですが,一般的なテンプレートファイルたちです.

表示させるページ処理をしてくれるファイル
固定ページpage.php
投稿ページsingular.php
カテゴリ別の投稿ページcontent.php
タグ別の投稿ページarchive.php
以上以外index.php

WordPressで子テーマを作成する方法(詳細ガイド)-kinsta

https://kinsta.com/jp/blog/wordpress-child-theme/

指示役のファイル

前述のファイルたちを指定する役割を持っているファイルが,function.phpです.

最近のテーマでも,function.phpは健在です.実は,ここにフックのコードを書いてあげるのが,以前のテーマも含めて共通解です.

WordPressで子テーマを作成する方法(詳細ガイド)- kinsta

https://kinsta.com/jp/blog/wordpress-child-theme/#create

最近のテーマでは

最近のテーマでは,content.phpやpage.phpなどのファイルを存在せず,phpの機能であるフック(hook)を使って,関数を実行させるようです.ということは,自作の関数も同様にフックを使うのがスマートです.

例えば,headerにgoogle analyticsなどのコードを自分のサイトのページ/投稿に埋め込むことも,このフックを使用するしかなないと言うことです.

  1. 以下の2つのフックを使う.
  2. アクションフック (action hook)
    • 登録: add_action(‘アクションフック名’, ‘フックされる関数名’), 複数行のコードで複数定義が可能.
    • 実行: do_action(‘アクションフック名’)
    • アクション
      • 記事の公開というアクション
      • 記事の更新というアクション
      • などなど
  3. フィルターフック (filter hook) : add_filter()

フックコード

WordPressには,既に”wp_head”というアクションフック名が定義されています.それに便乗する形でフックコードを書きます.

アクションフックコードの例

以下に示したコード例は,アクションフックの説明です.

(1) add_actionにより,wp_headのアクションフック名のフックを呼び出します.その時,google_analyticsという関数をフックしてもらいます.

(2) function google _analytics()には,実行したいコードを書きます.これで,WordPressが,通常運転中でwp_headを実行した時,google_analyticsも実行されることになります.

(3)もしも,どこかの任意のタイミングがあって,そこでフックを実行したいときには,do_actionを使用します.

add_action('wp_head','google_analytics');
function google_analytics() {
  if( !is_user_logged_in() ) {  //ユーザーがログインしていない場合に実行する
  ?>
  <script>
    ・
    ・
  </script>
  <?php 
  }
}

フィルターフックの例

フィルターフックの例は,また今度^^)

WordPressのテーマTwenty Twenty-TwoにGoogle AdSenseの自動広告を設置してみた話し

https://www.5cho-me.com/archives/193076

WordPress のフック(Hooks)

https://www.webdesignleaves.com/pr/wp/wp_func_hook.html

参考文献

WordPressのthe_categoryをフィルターフックする (2013)

https://worklog.be/archives/2032

多様なスタイルバリエーションのデフォルトテーマ「Twenty Twenty-Three(2023年)」- デフォルトテーマ –

https://st7-wp.com/twenty-twenty-three/

コミュニティから生まれたWordPressの新デフォルトテーマ「Twenty Twenty-Three」- kinsta –

https://kinsta.com/jp/blog/twenty-twenty-three-theme/

編集履歴

2023/11/11, Mr.HARIKIRI
2023/11/12, アクションフックの例の文言整備