WordPressの404判定はどこのフックタイミングでヒットするのか?

WordPressで404の判定がどのタイミングでされているのか調べてみた。

また、その時にクエリを変更して404判定を解除できるのか?

 

※hook名 → is_404()で判定。

 

parse_query → bool(false)

pre_get_posts → bool(false)

the_posts → bool(false)

wp → bool(true)

 

となった。

wpで判定されている。

 

じゃあ、例えば、2つのカスタム投稿をまたいで一覧を表示したい場合はどうするか。。

具体的なイメージは、

あるタクソノミーのときだけ、別のカスタム投稿の記事も合計した一覧を作りたい場合。

 

→これでページネーションをすると、メインのカスタム投稿の記事がないと404の判定になってしまう。

どこでhookをかけたらよいのか….

 

結論として「pre_get_posts」でhookをかける

「$query->set()」でクエリを変更する。archive時の表示件数を変更するのと同じ感じです。

 

この場合の「get_post_type()」はどっちになるのか

→記事があるのほうのPOSTTYPEが返ってくる。オレオレ的にはメインはこっちのPOSTTYPEだからこっちを返せよ!!っていうのは通じない。

 

「get_query_var( ‘post_type’ )」では2つのPOSTTYPEが返ってきます。

 

っていうことで元の情報を取りながら…

下記のようにすることでURLで指定されたカスタム投稿タイプを取得することが可能

 

 

 

2つをがっちゃん越して表示するのってやっぱりめんどいな。。。

 

 

コメントは受け付けていません。

サブコンテンツ

このページの先頭へ