You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WordPress主题functions.php中获取当前页面ID和标题(非文章ID)

在WordPress主题functions.php中获取当前页面ID和标题的正确方法

你之前的代码失效主要有两个核心问题:一是直接在functions.php根目录写代码时,WordPress还未完成页面查询,无法获取当前页面数据;二是函数使用方式有误。

问题拆解

  1. 拼写错误:你写的prin_r是笔误,正确写法为print_r
  2. 函数特性误解:the_title()默认直接输出标题,不会返回字符串,所以用print_r输出的结果是null;若要获取返回值,需传递第三个参数为false:the_title('', '', false)
  3. 执行时机不对:functions.php里直接编写的代码会在WordPress查询初始化前运行,此时当前页面的信息尚未加载,自然拿不到ID和标题。

正确实现方式

必须将代码挂载到WordPress的动作钩子上,确保在页面查询完成后再执行。推荐使用template_redirect或wp钩子,这两个钩子触发时,当前页面的查询流程已经完成。

示例代码:

// 挂载到template_redirect钩子,确保查询完成后执行
add_action('template_redirect', 'get_current_page_details');
function get_current_page_details() {
    // 先判断当前是否为页面(排除文章、自定义文章类型等)
    if (is_page()) {
        // 获取当前页面ID
        $current_page_id = get_queried_object_id();
        // 获取当前页面标题(传入ID确保拿到准确值)
        $current_page_title = get_the_title($current_page_id);
        
        // 这里可添加你的业务逻辑,以下为测试输出(正式环境建议注释)
        echo '当前页面ID:' . $current_page_id . '<br>';
        echo '当前页面标题:' . $current_page_title;
    }
}

补充说明

  • get_queried_object_id()确实可以获取当前页面ID,只要在查询完成后调用就有效
  • get_the_title()若不传参数,在循环或查询完成的钩子下也能拿到当前页面标题,但传入ID会更稳妥
  • 如果需要在其他场景使用这些数据,只需将逻辑写在钩子对应的函数里即可

内容的提问来源于stack exchange,提问作者kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:40:32