web-dev-qa-db-ja.com

動的ページでのみタイトルを変更する

私は運なしで動的ページのタイトルを変更しようとしています。

私がしたことは、私が外部データベースからアイテム(機会)をロードするところから2つのページテンプレートを作成したことです。 1ページのテンプレートで、私は1ページの機会をロードします:

<?php include 'Occasions-files/single.php';?>

そして2番目のページ・テンプレートで、私はその機会の概要をロードします。

<?php include 'Occasions-files/file.php';?>

今タイトルはSEOプラグインからデフォルトです。私はYoast SEOと同様にオールインワンSEOを試したが、タイトルを上書きするようには思えない。私が欲しいのは、タイトルをsingle.phpからオケージョン名に変更し、他のすべてのページはSEOプラグインに任せることです。

私はこれについてはあまり経験がなく、どこから始めればいいのかわかりません。テスト目的で、get_headerの前に手動でtestを配置しようとしましたが、手動で追加されたタイトルが表示されますが、ヘッダーがめちゃくちゃになっています。 get_headerの後にタイトルを追加すると、ヘッダーは正常に読み込まれますが、タイトルは表示されず、デフォルトのままです。

<title>test</title>
<?php get_header(); ?>

また、(functions.phpに)フィルタを追加しようとしましたが、これも結果がないか、挿入方法がわからない場合があります。

function custom_title_function($custom_title) {
$custom_title['title'] = "Test Title";
return $custom_title; }
add_filter( 'document_title_parts', 'custom_title_function' );

これを解決する方法について誰かが考えを持っていますか? advancedに感謝します。

1
Ptrckk

念のために、<head>領域(おそらくheader.phpにあります)のtitleタグはこのようになっていますか?

<title><?php wp_title(); ?></title>

Yoastがそれを使用して、タイトルを上書きできるようにする必要があります。

とにかくあなたがあなたのsingle.phpにこれを追加するならば(または少なくともそのページに対してget_header()が実行される前に)あなたはページタイトルを修正することができるはずです:

function custom_page_title( $title ){
    $return = $title;

    // You can check what the current post is via $wp_query->post
    global $wp_query;
    if( isset($wp_query->post) ){
        $id = $wp_query->post->ID;
        $post_title = $wp_query->post->post_title;
        // etc

        $return = $post_title;
    }

    // Or just outright change the title
    $return = 'test';

    return $return;
}
add_filter('wp_title', 'custom_page_title', 20);

ここで注意すべきもう1つのことは、Yoastを使用している場合、Yoastがタイトルを変更した後にこの関数が実行されることを確認する必要があるということです。これは、add_filter()の3番目のパラメータとして、20が入ってくる場所です。私はYoastが15でそのフィルタを実行すると思うので、あなたが20(または15以上の任意の数)であなたのものを実行することはあなたのフィルタがYoastのフィルタの後に実行されることを確認します。

1
James