WPML自定义文章提交后未自动翻译问题求助
WPML自定义文章提交后未自动翻译问题求助
嘿,我碰到过类似的WPML自动翻译触发问题,你这种情况大概率是自定义表单提交时没有触发WPML需要的钩子或者动作,导致它没检测到新文章需要翻译。给你几个可行的解决思路:
手动触发WPML的翻译同步动作
当你的自定义表单完成文章创建后,手动调用WPML的相关函数或者核心动作来触发翻译。比如你用wp_insert_post创建文章后,可以加上这段代码:// $post_id 是刚创建的文章ID do_action('save_post', $post_id); // 或者调用WPML专用函数,兼容性更好 if (function_exists('wpml_make_post_translatable')) { wpml_make_post_translatable($post_id); }加个
function_exists判断是为了避免WPML未启用时出现报错。检查自定义表单的文章创建逻辑
有些自定义表单可能直接操作数据库创建文章,或者用了非官方的创建方式,这会跳过WordPress核心的钩子触发。WPML是依赖这些核心钩子(比如save_post)来识别新内容的,所以一定要改用wp_insert_post这类官方函数来创建文章,确保钩子正常触发。验证WPML的自动翻译配置
先去WPML后台确认下对应文章类型和分类的自动翻译是否开启:进入WPML → 设置 → 翻译选项,找到你的自定义文章类型,确保“自动翻译新内容”的选项已经勾选,同时目标语言的设置也正确。调试钩子触发状态
可以临时加一段调试代码,确认表单提交时关键钩子是否触发:add_action('save_post', function($post_id) { error_log('Save post hook triggered for post ID: ' . $post_id); });提交表单后查看服务器的错误日志,如果没看到这条记录,说明你的文章创建流程确实没触发
save_post,那手动触发它就成了关键。
这些方法应该能解决你的问题,我之前帮朋友处理过几乎一模一样的场景,手动触发save_post钩子就搞定了。
内容来源于stack exchange
相关产品推荐
相关产品推荐

