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

PHP WordPress问题:无法获取点击元素的the_title()值

解决自定义文章类型点击元素标题无法正确获取的问题

听起来你是在处理自定义文章类型(CPT)的时候,遇到了获取点击元素标题的坑——明明想拿the_title()的值,结果输出的却是变量名,没法用来设置菜单名称对吧?我来帮你理理常见的问题和解决办法:

首先,搞懂the_title()和get_the_title()的核心区别

这是最容易踩的新手坑:the_title()函数默认是直接输出标题内容,而不是返回它给变量。如果你写了$my_title = the_title();,那$my_title拿到的其实是true(函数执行成功的返回值),标题已经直接打印到页面上了,后续用这个变量自然输出的不是标题而是变量名或者1。

正确的做法是用get_the_title(),它会返回标题字符串,你可以把它存在变量里灵活使用:

// 如果在WP循环内,直接调用即可
$clicked_post_title = get_the_title();

// 如果不在循环里,需要传入对应的文章ID(比如从点击事件的参数里获取)
$clicked_post_id = $_GET['target_post_id']; // 假设从URL或AJAX请求拿到ID
$clicked_post_title = get_the_title($clicked_post_id);

或者,你也可以给the_title()传第三个参数false,强制它返回值而不输出:

$clicked_post_title = the_title('', '', false);

其次,检查变量输出到前端的正确方式

如果是要把标题传到JS里设置菜单名称,一定要注意转义处理,不然很容易因为引号或特殊字符导致变量名被直接输出。比如正确的写法应该是:

// 先获取正确的标题
$clicked_post_title = get_the_title(get_the_ID());

// 用json_encode转义,避免引号冲突和语法错误
echo '<script>
    // 假设你的菜单元素有这个ID
    document.getElementById("custom-menu-item").textContent = ' . json_encode($clicked_post_title) . ';
</script>';

要是直接用字符串拼接(比如"' . $clicked_post_title . '"),当标题里有单/双引号时,会直接打断JS语法,导致变量名或者错误内容输出。

最后,确认你操作的是目标自定义文章类型

如果上面的方法都试过还是不行,要检查你获取的文章ID是不是属于目标自定义文章类型。可以用get_post_type()验证:

$post_type = get_post_type($clicked_post_id);
if ($post_type === '你的自定义文章类型slug') {
    // 这里再处理标题逻辑
}

确保你操作的确实是目标CPT的文章,而不是默认的post或page。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:55:11