首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Polylang职位自动同步

Polylang职位自动同步
EN

Stack Overflow用户
提问于 2019-12-11 16:00:05
回答 2查看 1K关注 0票数 0

我在一个多语种wordpress网站上使用Polylang插件页面和自定义的帖子类型。

我正在寻找的是一种方法,使每一个后同步自动,没有用户的输入。创建新的post类型时,将自动创建翻译并复制所有内容。

这样用户就根本看不到这个面板,或者至少没有机会编辑翻译或者(特别是)关闭同步。我想这可以通过更改用户角色特权来实现,但是帖子肯定必须自动同步。

我检查了这篇文章,但它什么也没做。

EN

回答 2

Stack Overflow用户

发布于 2020-05-07 10:34:43

需要类似的东西,挖出这个无文档的函数:

代码语言:javascript
复制
global $polylang;
// third parameter sets synchronisation
$polylang->sync_post_model->copy_post($post_id, $lang, true);

这会将内容复制到所选语言,并启用同步。

使用save_post的示例:

代码语言:javascript
复制
function auto_translate($post_id, $post, $update)
{
    if (!$update) {
        return;
    }

    // prevent recursion when publishing translations
    remove_action('save_post', 'auto_translate', 999, 3);

    global $polylang;
    $langs = ['nb', 'se', 'dk'];
    $current_translations = pll_get_post_translations($post_id);

    foreach ($langs as $lang) {
        if (!isset($current_translations[$lang])) {
            $polylang->sync_post_model->copy_post($post_id, $lang, true);
        }
    }
}

// needs low priority or the synchronisation option wont be saved
add_action('save_post', 'auto_translate', 999, 3);
票数 0
EN

Stack Overflow用户

发布于 2020-10-13 10:52:22

steinoy提供的解决方案是好的,但会产生额外的不想要的草稿。下面是一个改进的解决方案:

代码语言:javascript
复制
function auto_translate($post_id, $post, $update)
{
    if (!$update) {
        return;
    }

    // prevent creation of additional duplicate draft posts
    if ( $post->post_status == 'draft' ){
        return;
    }

    // prevent recursion when publishing translations
    remove_action('save_post', 'auto_translate', 999, 3);

    global $polylang;
    $langs = ['nb', 'se', 'dk'];
    $current_translations = pll_get_post_translations($post_id);
    $post_type = get_post_type($post_id);
    
    if ($post_type == 'post') {
        foreach ($langs as $lang) {
            if (!isset($current_translations[$lang])) {
                $polylang->sync_post_model->copy_post($post_id, $lang, true);
            }
        }
    }
}

// needs low priority or the synchronisation option wont be saved
add_action('save_post', 'auto_translate', 999, 3);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59289671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档