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

导入WordPress剧集帖子时,ACF自定义字段自动更新失效求助

问题分析与解决方案

你的代码在手动保存帖子时正常工作,但RSS导入插件触发时失效,核心原因及解决办法如下:

1. ACF钩子的触发场景限制

acf/save_post是ACF针对后台手动保存场景设计的钩子,多数RSS导入插件通过wp_insert_post()批量创建帖子时,不会主动调用ACF内部的保存逻辑,因此不会触发该钩子。

解决办法:改用WordPress原生save_post钩子
save_post会在所有帖子创建/更新操作(包括导入插件调用wp_insert_post())时触发,替换原钩子即可适配批量导入场景:

function get_stream_from_audio_src($string){
    preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $string, $match);
    if(empty($match[0][0])) return '';
    $stream_url = substr($match[0][0], 0, strpos($match[0][0], "mp3")+3);
    return $stream_url;
}

function run_after_saving_episode( $post_id ) {
    // 跳过自动草稿、修订版本
    if ( wp_is_post_autosave( $post_id ) || wp_is_post_revision( $post_id ) ) {
        return;
    }

    // 仅针对「剧集」分类的帖子执行
    if ( ! has_term( '剧集', 'category', $post_id ) ) {
        return;
    }

    // 检查duration字段是否为空
    if ( empty( get_post_meta( $post_id, 'duration', true ) ) ) {
        $stream_id = get_post_meta( $post_id, 'stream_id', true );
        if ( empty( $stream_id ) ) return;
        
        $clean_url = get_stream_from_audio_src( $stream_id );
        if ( empty( $clean_url ) ) return;
        
        $duration = get_MP3_Duration( $clean_url );
        if ( $duration ) {
            update_post_meta( $post_id, 'duration', $duration );
        }
    }
}
add_action( 'save_post', 'run_after_saving_episode', 100 );

2. 全局$post变量的冲突问题

原代码同时使用钩子传入的$post参数和global $post,批量导入场景中全局$post可能未正确初始化,导致$post->ID获取异常。修正后的代码直接使用钩子传入的$post_id,避免了全局变量依赖。

3. 导入插件的元数据写入时机

部分导入插件会先创建帖子主体,再批量添加元数据(如stream_id)。若钩子优先级过低,可能在stream_id写入前执行,导致获取不到数据。将钩子优先级设为100(高于默认的10),确保在元数据写入完成后再执行逻辑。

额外检查点

  • 确认get_MP3_Duration支持远程文件读取:导入时服务器可能禁用allow_url_fopen,可检查函数内部是否使用curl替代file_get_contents;
  • 查看导入插件的自定义钩子:部分高级导入插件提供专属的「导入完成」钩子,绑定到该钩子上能更精准地触发逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:33:32