如何在WordPress短代码(shortcode)中插入自定义PHP代码
报错原因排查
- 核心语法错误:多余的
add_action('foto_banner', 10 );调用,add_action第二个参数要求传入回调函数,你错误填入了优先级数值10,缺少回调参数,直接触发PHP致命错误。同时这行代码本身无任何业务作用,属于冗余代码。 - 短代码规范错误:WordPress短代码的回调函数要求必须返回输出内容,不能直接打印/输出内容。你当前代码中使用
the_field()、echo都是直接输出内容,会导致短代码渲染位置错乱、页面结构异常。 - 潜在兼容问题:未判断ACF(高级自定义字段)插件是否激活,若插件未启用时调用
get_field、the_field会直接报函数未定义错误。
正确实现方案
首先将以下代码放到你当前使用主题的functions.php文件末尾,或者自定义功能插件的代码文件中:
// 注册banner-picture短代码,调用ACF自定义字段foto_banner add_shortcode( 'banner-picture', 'custom_get_banner_picture' ); function custom_get_banner_picture() { // 先判断ACF插件是否激活,避免函数未定义报错 if ( ! function_exists( 'get_field' ) ) { return 'Texto não informado'; } $banner_img = get_field( 'foto_banner' ); if ( $banner_img ) { // 短代码必须返回内容,不能直接输出 return $banner_img; } return 'Texto não informado'; }
然后调整你原有短代码的调用部分:如果***[banner-picture]***的星号不是主题要求的特殊占位格式,请去掉星号,直接写[banner-picture]即可:
[ux_banner height="500px" bg="[banner-picture]" bg_size="original"]
注意:PHP代码不能直接放在文章/页面的可视化编辑器、短代码输入框中,必须放到主题功能文件或插件文件中才会生效。
内容的提问来源于stack exchange,提问作者Gabriel Lapa
相关产品推荐
相关产品推荐

