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

WordPress:如何实现header.php加载完成后输出文本?

解决get_header钩子在header内容前执行的问题

嘿,我来帮你理清楚这个问题——你踩了一个WordPress钩子时机的小坑!

问题原因

你用的get_header钩子,它的执行时机是在header.php模板文件开始加载之前,所以不管你把优先级设得有多高(哪怕是100000),你的menu_call()函数都会在header的实际内容输出前运行,这就是为什么文本出现在header内容前面的原因。

解决方案

根据你想要的输出位置,有几个靠谱的选项:

1. 在header末尾(</head>前)输出

如果你的文本可以放在header的头部区域末尾(比如</head>标签之前),可以用wp_head钩子——这个钩子是在主题header.php里的wp_head()函数调用时触发,几乎所有正规主题都会包含这个函数:

add_action( 'wp_head', 'menu_call' );
function menu_call() {
    echo "Menu has loaded";
}

2. 在body开头(header完全加载后)输出

如果你想要在header完全结束后(比如</header>标签之后,页面主体内容之前)输出文本,可以用wp_body_open钩子(WordPress 5.2+支持)。需要确保你的主题在<body>标签后调用了wp_body_open()函数:

add_action( 'wp_body_open', 'menu_call' );
function menu_call() {
    echo "Menu has loaded";
}

如果你的主题没有wp_body_open(),可以手动在header.php的<body>标签后添加一行:<?php wp_body_open(); ?>。

3. 自定义钩子(最灵活)

如果需要精确控制输出位置,你可以在header.php里添加一个自定义钩子,然后挂载你的函数:
首先打开主题的header.php,找到你想要输出文本的位置(比如</header>标签之后),添加:

<?php do_action('after_header'); ?>

然后在你的主题functions.php里添加:

add_action( 'after_header', 'menu_call' );
function menu_call() {
    echo "Menu has loaded";
}

这种方法能让你完全控制文本的输出位置,不受默认钩子的限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:50:54