首页 > 解决方案 > 在 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是我不想使用全局变量来执行此操作,并且我还想添加一些挂钩来更改标题的值等。任何帮助深表感谢。

标签: wordpresscustom-wordpress-pagesadd-action

解决方案


推荐阅读