如何自动填充ACF字段实现Elementor店铺目录可点击电话链接?
自动生成ACF电话链接字段的解决方案
方法1:利用ACF保存钩子自动填充链接字段
直接通过PHP代码监听文章保存事件,自动将phone_number字段的内容处理后写入phone_number_link字段,无需手动操作。
将以下代码添加到当前主题的functions.php文件,或者创建一个自定义插件(推荐,避免主题更新丢失代码):
// 文章保存时自动生成电话链接字段 add_action('acf/save_post', 'auto_generate_phone_link_field', 20); function auto_generate_phone_link_field($post_id) { // 获取原始电话号码字段值 $phone_number = get_field('phone_number', $post_id); if ($phone_number) { // 移除所有空格字符 $clean_phone = preg_replace('/\s+/', '', $phone_number); // 拼接tel:前缀生成链接 $phone_link = 'tel:' . $clean_phone; // 更新链接字段 update_field('phone_number_link', $phone_link, $post_id); } }
注意:确保代码中的字段键名phone_number和phone_number_link与你在ACF中创建的字段「字段名」完全一致(不是字段的显示名称)。
方法2:无需额外字段,直接在Elementor中动态处理
如果不想维护两个ACF字段,可以直接在Elementor里对phone_number字段的值进行实时处理,生成tel链接:
- 在Elementor编辑器中添加「按钮」或「文本链接」组件
- 链接部分选择「动态标签」→「ACF字段」→ 选择你的
phone_number字段 - 点击动态标签旁的齿轮图标打开设置,添加以下过滤器代码到主题
functions.php或自定义插件:
// Elementor动态标签自动转换电话号码为tel链接 add_filter('elementor/dynamic_tag/value', 'convert_phone_to_tel_link', 10, 3); function convert_phone_to_tel_link($value, $tag, $settings) { // 仅处理指定的ACF电话号码字段 if ($tag->get_name() === 'acf' && $settings['key'] === 'phone_number') { $clean_phone = preg_replace('/\s+/', '', $value); return 'tel:' . $clean_phone; } return $value; }
设置完成后,Elementor会自动将电话号码转换成可点击的tel链接,无需额外的phone_number_link字段。
自定义插件创建说明(可选)
如果不想修改主题文件,可创建一个独立插件:
- 新建PHP文件
auto-phone-link.php,写入以下内容:
<?php /** * Plugin Name: Auto Generate Phone Tel Link * Description: 自动从ACF电话号码字段生成tel链接 * Version: 1.0 */ // 这里放入方法1或方法2的代码 add_action('acf/save_post', 'auto_generate_phone_link_field', 20); function auto_generate_phone_link_field($post_id) { $phone_number = get_field('phone_number', $post_id); if ($phone_number) { $clean_phone = preg_replace('/\s+/', '', $phone_number); $phone_link = 'tel:' . $clean_phone; update_field('phone_number_link', $phone_link, $post_id); } }
- 登录WordPress后台,进入「插件」→「添加新」→「上传插件」,选择该文件并激活即可。
内容的提问来源于stack exchange,提问作者Stephanie Kennerson
相关产品推荐
相关产品推荐

