web-dev-qa-db-ja.com

タイトルの区切り文字を変更する方法

タイトル区切り文字を変更します。

アンダースコアスターターテーマを使用しています。タイトルを少し変更したいです。セパレータを「投稿タイトル|サイト名」から「投稿タイトル-サイト名」に変更します

これを行う簡単な方法は、

 <title><?php wp_title('-', true, 'right' ); ?><?php bloginfo( 'name' ); ?></title>

ヘッダーに。しかし今、私はadd_theme_support( 'title-tag' ); one 使用しないでください ヘッダーの<title>マークアップの導入でそれを読みました。

タイトルのセパレータを変更する簡単な方法はありますか?

この質問が他の同様の質問と異なる理由:これは、<title>タグを使用する必要がなくなったため、add_theme_support( 'title-tag' );の導入とその使用および変更方法から、本​​当にベストプラクティスに関するものです。ヘッダー。

[このような小さな変更を行うために8行のコードを記述する必要がないことを本当に願っています。 <title>タグをより簡単なソリューションとして最終的に使用することにした場合、add_theme_support( 'title-tag' );をfunctions.phpからコメントアウト/削除する必要がありますか? ]

6
IXN

WordPress 4.4用アップデート

WordPress 4.4以降、wp_title()関数がコアで使用されなくなったため、wp_titleフィルタは機能しません。その関数は廃止予定としてマークされていましたが、その後新しい通知があるまで復活させられましたが、 テーマ作者はそれを使うことをお勧めしません 。そのため、テーマで直接wp_title()関数を使用し続ける場合でもwp_titleフィルターは機能しますが、お勧めできません。

title-tagのテーマサポートが有効になっているときにドキュメントのタイトルをカスタマイズするための新しいフィルタがあります。

  1. pre_get_document_title
  2. document_title_parts
  3. document_title_separator

セパレータをカスタマイズしたいだけなので、次のようにdocument_title_separatorを使用できます。

add_filter( 'document_title_separator', 'cyb_document_title_separator' );
function cyb_document_title_separator( $sep ) {

    $sep = "-";

    return $sep;

}

前の答え

wp_titleタグをカスタマイズするには、 <title> filter を使用できます。

add_filter( 'wp_title', 'customize_title_tag', 10, 3 );
function customize_title_tag( $title, $sep, $seplocation ) {


    // Customize $title here.
    // Example taken from https://generatepress.com/forums/topic/title-tag-separator/
    $title = str_replace( '|', '-', $title );

    return $title;

}

このフィルタの使用方法のより複雑な例(TwentyTwelveテーマから取得):

function twentytwelve_wp_title( $title, $sep ) {
    global $paged, $page;

    if ( is_feed() )
        return $title;

    // Add the site name.
    $title .= get_bloginfo( 'name' );

    // Add the site description for the home/front page.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) )
        $title = "$title $sep $site_description";

    // Add a page number if necessary.
    if ( $paged >= 2 || $page >= 2 )
        $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) );

    return $title;
}
add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 );
14
cybmeta