使用WPML将.html添加到自定义帖子类型

时间:2018-03-20 作者:Gregory

(我提出了一个新的问题,因为我发现了为什么我的slug没有在生成的链接中进行翻译,如果这是一个错误,很抱歉,但对我来说听起来很合理)。

所以我在wordpress上使用WPML和自定义帖子类型。

我还补充道。html到我的CPT,并在stackexchange上找到代码。

// .html pour les customs posts

function rewrite_rules($rules) {
    $new_rules = array();
    foreach (get_post_types() as $t)
    $new_rules[$t . \'/(.+?)\\.html$\'] = \'index.php?post_type=\' . $t . \'&name=$matches[1]\';
    return $new_rules + $rules;
}
add_action(\'rewrite_rules_array\', \'rewrite_rules\');

function custom_post_permalink ($post_link) {
    global $post;
    if ( $post ) {
        $type = get_post_type($post->ID);
        return home_url() . \'/\' . $type . \'/\' . $post->post_name . \'.html\';
    }
}
add_filter(\'post_type_link\', \'custom_post_permalink\'); // for cpt post_type_link (rather than post_link)
但是

使用这个函数,我生成的URL不使用翻译的slug,而是使用默认语言slug,并转到404。

如何编辑此代码以获得CPT的正确WPML slug?

如果我使用这段代码,它工作得很完美,但没有。我的URL末尾的html。

非常感谢你的宝贵帮助

1 个回复
SO网友:Gregory

阿莱卢西亚!

这是因为$type不使用WPML函数

以下是与WPML和已翻译slug完美配合的代码:

// .html pour les customs posts

function rewrite_rules($rules) {
    $new_rules = array();
    foreach (get_post_types() as $t)
    $new_rules[$t . \'/(.+?)\\.html$\'] = \'index.php?post_type=\' . $t . \'&name=$matches[1]\';
    return $new_rules + $rules;
}
add_action(\'rewrite_rules_array\', \'rewrite_rules\');

function custom_post_permalink ($post_link) {
    global $post;
    if ( $post ) {
        $type = get_post_type($post->ID);
        $slug = apply_filters( \'wpml_get_translated_slug\',$type,$type,\'\');
        return home_url() . \'/\' . $slug . \'/\' . $post->post_name . \'.html\';
    }
}
add_filter(\'post_type_link\', \'custom_post_permalink\'); // for cpt post_type_link (rather than post_link)

结束

相关推荐

批量追加URL(向slug添加单词)

有没有办法在每个URL的末尾为帖子批量添加一个单词?我有大约3500个帖子,添加到每个帖子上会很耗时。例如,URL是www.example.com/my-post/ www.examle.com/new-post/ 我想在URL的末尾添加一个单词www.example.com/my-post-word/ www.examle.com/new-post-word/ 有MySql脚本来做这样的事情吗?