如何使用ACF(高级自定义字段)自定义值动态创建链接?
解决ACF字段生成WhatsApp自定义链接的问题
你可以替换原来的短代码,直接写一个专门读取ACF字段的WhatsApp链接短代码,代码如下:
function wp_whatsapp_link_shortcode($attr, $content){ // 获取ACF自定义字段值,确保字段名和你后台设置的完全一致 $phone_number = get_field('phone-number'); // 字段为空时返回提示,避免生成无效链接 if(empty($phone_number)){ return '<span style="color:red;">未设置联系电话</span>'; } // 清理电话号码中的非数字字符(空格、括号、横杠等) $clean_phone = preg_replace('/\D/', '', $phone_number); // 拼接WhatsApp链接,默认前缀55可根据需求修改,文本部分用urlencode转码 $whatsapp_url = 'https://wa.me/55' . $clean_phone . '?text=' . urlencode('请输入你的默认消息内容'); // 设置短代码的样式默认参数 $args = shortcode_atts( array( 'color' => '#25D366', // 用WhatsApp官方绿色作为默认 'textsize' => '16px' ), $attr ); // 生成最终的链接HTML,同时做安全转义 $output = '<a href="' . esc_url($whatsapp_url) . '" style="color:' . esc_attr($args['color']) . '; font-size:' . esc_attr($args['textsize']) . ';">' . ($content ? $content : 'WhatsApp') . '</a>'; return $output; } add_shortcode( 'whatsapp_link', 'wp_whatsapp_link_shortcode' );
关键说明:
- 确保
get_field('phone-number')里的字段名和你ACF后台创建的完全一致,大小写敏感。 - 清理电话号码的步骤是为了避免字段里的格式符号(比如
(12) 3456-7890)导致链接失效。 - 默认消息文本需要用
urlencode()转码,这样特殊字符和空格能被正确识别。 - 短代码支持自定义样式和链接文字,用法示例:
- 基础调用(默认文字和样式):
[whatsapp_link] - 自定义文字和样式:
[whatsapp_link color="#000000" textsize="18px"]点击发消息[/whatsapp_link]
- 基础调用(默认文字和样式):
内容的提问来源于stack exchange,提问作者Willian Theodorovicz
相关产品推荐
相关产品推荐

