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

如何将两个ACF文本字段合并为第三个ACF文本字段?

问题解答

a) 是否可以将两个ACF文本字段合并为第三个字段?

可以实现,即使使用ACF免费版,也能通过自定义PHP逻辑自动将Video_Poster_Path和Video_Link的内容合并到Merged_HTML字段中,生成你需要的video标签代码。

b) 具体操作步骤及PHP函数实现

操作流程

  1. 确认已在ACF中创建三个字段:Video_Poster_Path(文本类型)、Video_Link(文本类型)、Merged_HTML(建议选文本区域类型,方便查看生成的代码)。
  2. 将下方PHP代码添加到主题的functions.php文件,或使用自定义代码插件(如Code Snippets)添加,避免主题更新导致代码丢失。

动态生成代码的PHP函数(推荐)

该函数会在调用Merged_HTML字段时自动生成代码,源字段更新时同步刷新结果:

// 动态合并ACF字段生成视频HTML
function acf_merge_video_fields($value, $post_id, $field) {
    // 获取两个源字段的值
    $poster_path = get_field('Video_Poster_Path', $post_id);
    $video_link = get_field('Video_Link', $post_id);

    // 仅当两个字段都有值时生成代码
    if (!empty($poster_path) && !empty($video_link)) {
        $merged_html = sprintf(
            '<video poster="%s" controls="controls" controlsList="nodownload" width="880">
                <source src="%s" type="video/mp4">
            </video>',
            esc_url($poster_path),
            esc_url($video_link)
        );
        return $merged_html;
    }

    // 字段为空时返回默认值
    return $value;
}

// 绑定到Merged_HTML字段的加载事件
add_filter('acf/load_value/name=Merged_HTML', 'acf_merge_video_fields', 10, 3);

保存时写入代码的PHP函数(备选)

如果希望在保存文章时就把生成的代码写入Merged_HTML字段(而非动态生成),可使用以下代码:

// 保存文章时合并ACF字段生成视频HTML
function acf_save_merged_video_html($post_id) {
    // 跳过自动保存
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;

    // 获取两个源字段的值
    $poster_path = get_field('Video_Poster_Path', $post_id);
    $video_link = get_field('Video_Link', $post_id);

    if (!empty($poster_path) && !empty($video_link)) {
        $merged_html = sprintf(
            '<video poster="%s" controls="controls" controlsList="nodownload" width="880">
                <source src="%s" type="video/mp4">
            </video>',
            esc_url($poster_path),
            esc_url($video_link)
        );
        // 更新Merged_HTML字段
        update_field('Merged_HTML', $merged_html, $post_id);
    } else {
        // 源字段为空时清空目标字段
        update_field('Merged_HTML', '', $post_id);
    }
}

add_action('acf/save_post', 'acf_save_merged_video_html', 20);

使用方式

在文章/页面中调用字段时,可直接用短代码:
[acf field="Merged_HTML"]
或在模板文件中用PHP调用:

echo get_field('Merged_HTML');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:22:34