質問

テーマに 404 ページが定義されている場合、$wp_query->query_vars で「タグ」が定義されており、そのタグに一致する投稿がない場合、Wordpress は 404 ページを表示します。

投稿に加えて、各ページにいくつかの情報を表示するプラグインを作成しています。タグに一致する投稿がない場合に 404 ページが表示されるように 404 ロジックを変更したいと考えています そして プラグインは、そのタグに一致するデータを取得できません。プラグインがデータを見つけることができたら、そのページに投稿があるかどうかに関係なく、通常のページを表示したいのですが...

グーグルで検索したり、コードを読んだり、コーデックスを読んだり、あちこち調べたりしましたが、Wordpress がどこで 404 をトリガーするのか、またそれをオーバーライドする方法がわかりませんでした。(functions.php の status_header() と何か関係があるのではないかと感じていますが、いつ、どのようにフックする必要があるのか​​は不明です)。

助け、アイデア、啓発をいただければ幸いです。

ありがとう、

~ パッチ

役に立ちましたか?

解決

もう少しコードを調べてグーグル検索した結果、答えが見つかりました。に含まれています このスレッド (Otto42 の投稿を参照) ただし、記録のために、次のコードをプラグインに追加すると、指定した条件に対する 404 処理がオーバーライドされます。

add_filter('template_redirect', 'my_404_override' );
function my_404_override() {
    global $wp_query;

    if (<some condition is met>) {
        status_header( 200 );
        $wp_query->is_404=false;
    }
}

PHP がヘッダーを出力する前に、「is_404」を false に設定する必要があることに注意してください。そのため、これを template_redirect ロジックにフックすることをお勧めします。

~ パッチ

他のヒント

常に 200 ページあるカスタム プロジェクトでも同じことを行う必要がありましたが、これをテンプレート ファイルの先頭に追加するだけでもよいことがわかりました (get_header(); の上)。)

global $wp_query;
status_header( 200 );
$wp_query->is_404=false;

作成する 404.php テンプレート ファイルをテーマに追加し、必要に応じてカスタマイズします (プラグイン出力などを追加します)。あなたは言及しました テーマで定義されている, 、あなたにとってこのアプローチの具体的に何が間違っているのでしょうか?

コーデックス エラー 404 ページの作成

ライセンス: CC-BY-SA帰属
所属していません wordpress.stackexchange
scroll top