5.5の機能強化:set_404メソッドの新アクション

説明

WordPress 5.5 RC 2(以降RC 2)」が公開され、今日・明日には正式版がリリースされる。そんなWordPress 5.5 RC 2のソースコードを眺めていると、WP_Queryクラスのset_404メソッドにアクションが追加されていた。

はじめに、この記事は公開された5.5 RC 2をもとにしており、正式リリースの際に変更される可能性があることを予めお断りする。

WP_Queryクラスのプロパティ

>WP_Queryクラスはユーザーからリクエストされたページ向けの投稿情報を取得する際に使用されている重要なクラスである。取得した投稿情報を保持するほか、リクエストされたページがどんなページなのかをプロパティとして保持している。今回の記事に関連するのはその中の1つis_404である。

プロパティのis_404には、該当する投稿情報が見つからなかった場合(キーワード検索時などは除く)にtrueが格納され、一般的には is_404関数を使用して状態を調べる。

そんなプロパティのis_404だが、グローバル変数$wp_query(WP_Queryオブジェクト)から直接読み取ることができるだけでなく、書き換えることも可能である。

global $wp_query;
$wp_query->is_404 = true;

このように直接書き換えることはあまり褒められたものではないが、手軽さもあってついついやってしまいがちである。では、どのようにすべきなのかというと、プロパティのis_404をtrueに変更する場合はWP_Queryクラスのset_404メソッドが適任である。

global $wp_query;
$wp_query->set_404();

5.5ではこのset_404メソッドにset_404アクションが追加された。

do_action_ref_array( 'set_404', array( $this ) );

このアクションはデバッグ目的で追加されたもので、パラメータは自身のWP_Queryオブジェクトとなっており、その時の状況を詳しく把握できる。

これは5.5の開発者向けの変更点の1つであり、いつか、こんな提案ができるようになりたいものだ。

【参考】Do an action when a 404 is triggered


最終更新 : 2020年08月12日 08:26


お勧め

wp_specialchars_decode(2018年5月27日 更新)

string wp_specialchars_decode( string $string [ , mixed $quote_style = ENT_NOQUOTES ] )
HTMLエンティティ化された特殊文字をもとに戻す。

restore_previous_locale(2018年11月21日 更新)

string | bool restore_previous_locale()
直前のロケールへ戻す。

ent2ncr(2020年4月10日 更新)

string ent2ncr( string $text )
&のような名前エンティティを&のような数値エンティティに変換する。

wp_editor(2017年6月9日 更新)

void wp_editor( string $content, string $editor_id [ , array $settings = array( ] )
エディタを表示する。

get_post_types_by_support(2018年5月27日 更新)

array get_post_types_by_support( mixed $feature [ , string $operator = 'and' ] )
特徴(≒編集要素)の条件にマッチする投稿タイプ名を取得をする。