在 Wordpress 中为不存在的页面覆盖 404设置数据

问题描述

我有以下问题:

我有几个不存在的页面,例如当 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 的原因是我不想使用全局变量来这样做,而且我还想添加一些钩子来更改标题的价值之类的。非常感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)