6

コンテキスト: WordPress 5.4.5、Yoast 3.7.1

私はクライアントのサイトにアクセスできるプラグイン開発者です。このサイトには Yoast 3.7.1 がインストールされていますが、何をしても 404 ページのtitle.

現在、同様の質問が提起されている StackOverflow の他のページ (ここここここheader.phpなど) で、回答者は が への呼び出しを正しく埋め込んでいるかどうかを尋ねていwp_title()ます。header.phpその時点での現在のテーマの内容は次のとおりです。

    <title><?php wp_title( '|', true, 'right' ); ?></title> 

興味深いことに、私の404.phpページでwp_get_document_title()は、上記Page not found - XXXXwp_title呼び出しでセパレーターが|. Yoast によるタイトルの書き換えは無効になっているため、そのダッシュがどこから来ているのかまったくわかりません。

私のプラグインは REST 呼び出しを行い、ページに含めるためにオフサイトからコンテンツを取得します。そのコンテンツの一部は、 で使用されるテキストtitleです。

以前のクライアント サイトでは、次のことができました。

add_filter('wp_title', 'change_404_title');
function change_404_title($title) {
    if (is_404()) 
    {
        global $plugin_title;
        if (!empty($plugin_title)) 
        {
             $title = $plugin_title;
        }
    }
    return $title;
}

ただし、このサイトでは、それは機能していません。

使用している WordPress のバージョンに基づいて、pre_get_document_titleフィルターをフックしてみました。

add_filter('pre_get_document_title', 'change_404_title');

しかし、再び役に立たない。私は現在、Yoastについて読んでいます...

4

3 に答える 3

14

wp_titleバージョン 4.4 以降では非推奨です。したがって、新しいフィルターを使用する必要がありますpre_get_document_title。あなたのコードは問題ないように見えますが、私は混乱していglobal $plugin_titleます。最初にこれを試してみてください

add_filter('pre_get_document_title', 'change_404_title');
function change_404_title($title) {
    if (is_404()) {
        return 'My Custom Title';
    }
    return $title;
}

うまくいかない場合は、関数を最近実行するように優先度を変更してみてください。

add_filter('pre_get_document_title', 'change_404_title', 50);
于 2016-11-04T05:15:03.653 に答える