當(dāng)你訪問的WordPress站點的網(wǎng)址不存在時,WordPress會調(diào)用主題的404.php模板來返回404錯誤信息,比如:
最近,我需要一種編程方式來觸發(fā)我的一個免費WordPress插件中的404錯誤。幸運的是,WordPress使它非常容易實現(xiàn)。本快速教程介紹了兩種不同的實現(xiàn)方法。
第一種方法
使用主題的404模板(即404.php)提供404“未找到”響應(yīng)的第一種方法,我們可以通過wp鉤子像下面這樣插入我們的函數(shù):
function shapeSpace_trigger_404() { global $wp_query; $wp_query->set_404(); status_header(404); } add_action('wp', 'shapeSpace_trigger_404');
然后在函數(shù)內(nèi)部,聲明全局變量,并使用set_404()方法在WP查詢對象上設(shè)置404 。最后,我們使用WordPress status_header()函數(shù)設(shè)置404標(biāo)頭響應(yīng)。該代碼的最終結(jié)果是使用主題的模板文件404.php提供404 HTTP響應(yīng)。
第二種方法
第二種方法使用pre_get_posts操作鉤子設(shè)置404錯誤并提供主題404.php模板。代碼像這樣:
function shapeSpace_trigger_404($wp_query) { if ($wp_query->is_main_query()) { $wp_query->set_404(); status_header(404); } } add_action('pre_get_posts', 'shapeSpace_trigger_404');
在此方法中,我們使用pre_get_posts修改主WP查詢。
第一種方法和第二種方法之間的主要區(qū)別是使用的鉤子和$wp_query變量的獲取。在第一種方法中,我們將其聲明為全局變量。在第二種方法中,它通過pre_get_posts鉤子傳遞給函數(shù)。