lightningの「検索結果」ページのタイトルを「ショップ検索」に変更する

Chick

検索結果を表示するページの見出しやタブに表示される名前を「ショップ検索」に変更する説明です。

_g3/template-parts/page-header.php:


lightning_page_header_title_html フィルターフックがあり、ページヘッダータイトルの変更が可能です。

<div class="page-header"><div class="page-header-inner container">
<?php
//lightning_page_header_title_htmlフィルターフックを通じてフィルタリングされたページヘッダータイトルを表示します
echo wp_kses( apply_filters( 'lightning_page_header_title_html', $page_header_title_html ), $allowed_html );
?>
</div></div>  <! -- [ /.page-header ] -- >

Condetionnal Tagsを正しく使用する方法

WordPressの functions.php ファイルは、テーマが読み込まれるときに実行されます。しかし、特定のページにのみ適用される条件付きタグ(Conditional Tags)は、クエリが実行された後にしか正しく動作しません。これは、WordPressがデータベースクエリを実行してどのページがリクエストされているかを特定する前に functions.php が読み込まれるためです。
[※クエリが実行される」というのは、WordPressが特定のページを表示するためにデータベースから情報を取得する処理を指します]

例えば、is_single()is_page() といった条件付きタグは、クエリが実行された後にしか適切な情報を返せません。つまり、これらのタグを functions.php に直接書いても、意図通りには動作しない可能性があるということです。


ダメなバージョン:
functions.php 内に直接記述された条件付きタグの例

// functions.php 内に直接記述された条件付きタグの例
if (is_single()) {
    // ここに処理を追加
}

is_single() は単一の投稿ページかどうかを判定する条件付きタグですが、WordPressがまだどのページがリクエストされたのかを把握していない段階では、このタグは正しい情報を返しません。

この問題を解決するためには、wp フックや template_redirect フックを使用して、クエリが実行された後に条件付きタグをチェックするコードを実行するようにすることが一般的です。
[※特定のページが表示される際には、まずそのページの情報を取得するためにデータベースクエリが実行されます]

以下はその例です:

add_action('wp', 'my_custom_function');
function my_custom_function() {
    if (is_single()) {
        // ここに処理を追加
    }
}

このようにすることで、クエリが実行された後に条件付きタグをチェックできるようになります。
[※特定のアクションフック(wp フックや template_redirect フックなど)を使用して、クエリが実行された後に条件付きタグをチェックするコードを実行することが推奨されます]

Conditional Tags – Theme Handbook | Developer.WordPress.org

Conditional Tags can be used in your Template Files in classic themes to alter the display of content depending on the conditions that the…

functions.php:

検索結果ページのページヘッダータイトルをショップに変更する:

WordPressの functions.php ファイルでは、add_filter() や add_action() などの関数を使って、特定のフックに対してコールバック関数を登録することが一般的です。直接関数を記述することも可能ですが、それは通常、関数の名前を使わずに匿名関数(無名関数)として行います。

このコードでは、add_filter() フックに lightning_page_header_title_html を指定しています。このフィルターが適用される際に、引数として渡されるコールバック関数(匿名関数)が、現在のページが検索結果ページであるかどうかをチェックし、その場合にタイトルを変更する処理を行っています。

関数の名前を使わずに匿名関数を記述することで、単一のフィルターまたはアクションに対して簡潔に処理を追加することができます。これにより、不要なグローバル関数の定義を避け、コードをスッキリと保つことができます。

// ページのタイトルを「ショップ検索」に変更する
// lightning_page_header_title_html フィルターを使用して、ページのタイトルを「ショップ検索」に変更する
add_filter( 'lightning_page_header_title_html', function( $page_header_title_html ){

    // もし現在のページが検索結果ページであれば
    if ( is_search() ) {
        $page_header_title_html = '<div class="page-header-title">ショップ検索</div>';
    }

    // 変更したタイトルまたは元のタイトルを返す
    return $page_header_title_html;

} );

このコードは「検索結果ページのページ ヘッダー タイトルをショップ検索に変更する」という機能を実現します。

add_filter() 関数:
フィルターフックにコールバック関数を追加します。

lightning_page_header_title_html フィルターフック:.
add_filter() 関数の1つ目の引数です。
ページ ヘッダー タイトルのHTMLを変更できます。

フィルターフックのコールバック関数:
add_filter() 関数の2つ目の引数です。
無名関数を使用しています。
フィルターが実行されるときに実行するコードを定義します。

PHP: 無名関数 - Manualwww.php.net


if 文:

is_search() 関数を使用して、現在のページが検索結果ページかどうかをチェックします。
検索結果ページならば、ページ ヘッダー タイトル を「ショップ検索」に変更します。