我有以下问题:
我有几个不存在的页面,例如当 URL 中有“详细信息”后跟一个 ID 时,如 mydomain.com/detail/12345/
在这种情况下,我将使用 do_action 覆盖 404,并包含一个模板,如下所示:
if($detail):
do_action('override404', 'detail');
add_filter('template_include', function () {
return get_template_directory() . '/templates/page/detail-page.php';
});
endif;
add_action(
'override404',
function ($name) {
global $wp_query;
status_header(200);
$wp_query->is_single = true;
$wp_query->is_404 = false;
},
10,
1
);
到目前为止,一切都很好。如您所见,此操作的优先级为 10。
现在,在另一个动作中,我想检查 的值is_single()
,但它始终设置为false
。
像这样的东西:
function enqueue_api_scripts() {
var_dump(is_single());
}
add_action('wp_enqueue_scripts', 'enqueue_api_scripts', 11);
如您所见,此操作的优先级为 11。
我没有看到我在这里做错了什么。我希望能够检查是否is_single()
等于的原因true
是我不想使用全局变量来执行此操作,并且我还想添加一些挂钩来更改标题的值等。任何帮助深表感谢。