如何在WordPress主题functions.php中获取当前页面ID和标题(非文章ID)
在WordPress主题functions.php中获取当前页面ID和标题的正确方法
你之前的代码失效主要有两个核心问题:一是直接在functions.php根目录写代码时,WordPress还未完成页面查询,无法获取当前页面数据;二是函数使用方式有误。
问题拆解
- 拼写错误:你写的
prin_r是笔误,正确写法为print_r - 函数特性误解:
the_title()默认直接输出标题,不会返回字符串,所以用print_r输出的结果是null;若要获取返回值,需传递第三个参数为false:the_title('', '', false) - 执行时机不对: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
相关产品推荐
相关产品推荐

