特定のページテンプレートにadd_filterを使用するにはどうすればよいですか?

filter wordpress
特定のページテンプレートにadd_filterを使用するにはどうすればよいですか?

WordPressには、「designers.php」というページテンプレートがあります。

ロード時に、 `slug`を読み取って一意のIDを取得し、DBを呼び出してデザイナー情報を取得します。 +タイトルタグでデザイナー名を使用して、この情報を使用してページタイトルを変更します。

designers.php`ファイルで add_filter`を使用しようとしましたが、動作しません:

add_filter('wp_title', 'set_page_title');

function set_page_title($title) {
  global $brand;
  return 'Designer '.$brand['name'].' - '.get_bloginfo('name');
}

私は、 add_filter`がプラグイン内または functions.php`ファイルのいずれかに配置されている必要があると思います。

私がやろうとしていることをどのように達成できますか?

  • UPDATE * +私が `wp_title`を使用している限り、関数は実行されません。 (テスト用に) `init`に変更すると、関数が起動します。

では、なぜ「add_filter」は「wp_title」でも機能しないのですか?

  3  1


ベストアンサー

あなたはほぼ正しいです。 フィルターはfunction.phpに存在する必要があり、タイトルを変更するために呼び出されます。 フィルターは条件付きで追加できます。 この関数http://codex.wordpress.org/Function_Reference/is_page_template [is_page_template()]を使用して、wordpressがテンプレートをレンダリングしているかどうかを判断します

次のように関数を変更してみてください。

add_filter('wp_title', 'set_page_title');

function set_page_title($title) {
  global $brand;
  if (is_page_template('designer.php'))
     return 'Designer '.$brand['name'].' - '.get_bloginfo('name');
  else
     return $title;
}

3


まず、「add_filter」はプラグイン内または「functions.php」ファイル内に配置する必要があります。

次に、フィルターの優先順位を設定する必要がある場合があります。

add_filter('wp_title', 'set_page_title',1);

function set_page_title() {
  global $brand;
  return 'Designer '.$brand['name'].' - '.get_bloginfo('name');
}

そして、「

`header.php`テーマのメタ。

1


タイトルとURLをコピーしました