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

WordPress中functions.php加载内容的href用ACF短代码引号冲突如何解决

问题根因

你遇到的截断是引号嵌套冲突+短代码未解析两个问题共同导致的:

  • 你的HTML字符串外层用双引号包裹,href属性用了单引号,ACF短代码的field参数又用了单引号,三层嵌套导致单引号提前闭合,字符串被截断。
  • 直接把ACF短代码写在PHP字符串中,WordPress不会自动解析短代码,会直接输出短代码原文。
修复方案

方案1:保留短代码写法(快速修复)

调整引号转义规则,同时用do_shortcode函数解析短代码:

function my_editor_content( $content ) {
    $content = do_shortcode("<h3>Title</h3><p>text</p>
    <a href='[acf field=\"afas_url\"]' target='_blank' rel='noopener'><button>Solliciteer Nu</button></a>");
    return $content;
}

改动说明:

  • 短代码内部的双引号用\转义,避免和外层字符串的双引号冲突
  • 用do_shortcode()包裹HTML内容,触发WordPress的短代码解析逻辑

方案2:使用ACF原生PHP函数(更稳定)

直接调用get_field()获取字段值,完全规避引号嵌套问题,同时符合WordPress编码规范:

function my_editor_content( $content ) {
    // 获取自定义字段值,为空时设置默认锚点避免无效链接
    $afas_url = get_field('afas_url') ?: '#';
    $content = "<h3>Title</h3><p>text</p>
    <a href='".esc_url($afas_url)."' target='_blank' rel='noopener'><button>Solliciteer Nu</button></a>";
    return $content;
}

改动说明:

  • 用esc_url()对URL做安全转义,规避XSS风险
  • 逻辑更直观,没有短代码解析的额外开销
补充说明

如果要仅在招聘列表页生效,可在函数内部增加页面判断逻辑,比如:

if ( is_post_type_archive('job') ) { // 将job替换为你招聘内容的自定义文章类型别名
    // 执行内容修改逻辑
}

记得要把函数挂载到对应钩子上,比如在functions.php中追加:
add_filter('the_content', 'my_editor_content');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:57:02