1

ユーザーの選択に応じてページ タイトルをカスタマイズする必要があるテンプレートがいくつかあります。Codex ドキュメントに従って「wp_title」タグにフィルター フックを追加しましたが、フィルターが適用されると、コールバック関数宣言のパラメーターに関して警告が表示されます。

警告: /Applications/XAMPP/xamppfiles/htdocs/.../blog/wp-content/themes/.../inc/my_functions.php の 2 行目に buildPageTitle() の引数 4 がありません

my_functions.php

1  <?php
2  function buildPageTitle($sep, $echo, $seplocation, $brand) {
3    return $brand.$sep;
4  }
5  ...

テンプレート

<?php
/*
Template Name: By brand-countries
*/

$brandLabel = get_query_var('brand');
require_once('inc/dbConn.php');
require_once('inc/get_brand_data.php');
require_once('inc/my_functions.php');

add_filter('wp_title', 'buildPageTitle', 10, 4);
apply_filters('wp_title', $sep, false, $seplocation, $brand);
get_header();
?>

buildPageTitle() 関数で $brand 変数をグローバルとして宣言する問題を解決できますが、他のテンプレートでは異なる変数が必要になるため、パラメーターとして渡すことを好みます

4

1 に答える 1

1

WordPress フィルターの仕組みを誤解していると思います。関数wp_title()とフィルターがありますwp_title。タイトルを作成するために何らかの作業を行う関数を呼び出し、その出力をフィルターに渡すことで、他のコードが結果をさらにカスタマイズできるようにします。

関数とフィルターは、必ずしも同じ引数を使用するとは限りません。この関数wp_title()には、タイトルをエコーするかどうか、およびセパレーターの位置を指定するセパレーターを渡すことができます。フィルターは、wp_title()作成されたタイトル、セパレーター、およびセパレーターの位置を取得できます。フィルタ フックを ( 経由で) 設定するとき、add_filter()必要な引数の数を指定します: 1 (デフォルト)、2、またはwp_title()3 wp_title

したがって、自分自身に電話する必要はありませんapply_filters()wp_title()(おそらくテンプレート ファイルで) を呼び出しheader.phpます。この関数はフィルター自体を呼び出します。

変数にアクセスしたい場合brandは、それをグローバル変数に入れるか、buildPageTitle()関数にそれを返す他の関数を呼び出させる必要があります。どの戦略を使用するかは、状況によって異なります。さまざまなテンプレートと、そこで使用したいタイトル形式について詳しく教えていただけますか?

于 2011-06-05T16:05:09.250 に答える