WPML-设置插入帖子的语言

时间:2018-01-19 作者:Pipo

我在前端有一个联系人表单7,每次填写后都会创建一个新的自定义帖子。一切正常,但我不知道如何设置这篇文章的语言(目前它保存在英语中,因为它是我在WPML中的默认语言)。

以下是我尝试过的:

function save_form_to_post( $posted_data ) {

    $args = array(
        \'post_type\' => \'projects\',
        \'post_status\'=> \'draft\',
        \'post_title\'=> wp_strip_all_tags( $posted_data[\'title\'] ),
        \'post_content\'=> wp_strip_all_tags( $posted_data[\'pitch\'] ),
    );
    $post_id = wp_insert_post($args);

    if( $posted_data[\'language\'] == \'Spanish\' || $posted_data[\'language\'] == \'German\' || $posted_data[\'language\'] == \'French\' ) {
        if( $posted_data[\'language\'] == \'Spanish\' ) {
            $set_language_args = array(
                \'element_id\' => $post_id,
                \'element_type\'  => \'projects\',
                \'language_code\' => \'es\'
            );
            $cat_ID = 729;
        } elseif( $posted_data[\'language\'] == \'German\' ) {
            $set_language_args = array(
                \'element_id\' => $post_id,
                \'element_type\'  => \'projects\',
                \'language_code\' => \'de\'
            );
            $cat_id = 726;
        } elseif( $posted_data[\'language\'] == \'French\' ) {
            $set_language_args = array(
                \'element_id\' => $post_id,
                \'element_type\'  => \'projects\',
                \'language_code\' => \'fr\'
            );
            $cat_id = 725;
        }
        do_action( \'wpml_set_element_language_details\', $set_language_args );
    } else {
        $cat_id = 723;
    }
    wp_set_object_terms( $post_id, $cat_id, \'project_category\' );

    return $posted_data;
}
add_filter( \'wpcf7_posted_data\', \'sep_save_screenplay_form\' );
因此,根据前端表单上选择字段的值设置语言。然后我试着用wpml_set_element_language_details 钩子定义帖子的语言(每个帖子都没有翻译)。最后,我为这篇文章设置了分类法。

现在,这篇文章只保存英语,而不保存其他语言。有人能给我解释一下为什么它不起作用以及如何使它起作用吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:Shibi 整理而成

这个wpml_set_element_language_details 行动element_type 需要使用WPML使用的正确前缀:

来自WPML文档

element_type(字符串)元素的类型。可以是帖子类型:post\\u post、post\\u page、post\\u attachment、post\\u nav\\u menu item、post\\u{自定义帖子键}或分类法:tax\\u category、tax\\u post\\u tag、tax\\u nav\\u menu、tax\\u{自定义分类键}。如果未设置,则默认为post\\u post。

对你来说应该是post_projects 但您也可以使用wpml_element_type 要获得正确的前缀,请执行以下操作:

$element_type = apply_filters(\'wpml_element_type\', \'projects\');

Resources:

https://wpml.org/wpml-hook/wpml_set_element_language_details/

https://wpml.org/wpml-hook/wpml_element_type/

结束

相关推荐

WPML-设置插入帖子的语言 - 小码农CODE - 行之有效找到问题解决它

WPML-设置插入帖子的语言

时间:2018-01-19 作者:Pipo

我在前端有一个联系人表单7,每次填写后都会创建一个新的自定义帖子。一切正常,但我不知道如何设置这篇文章的语言(目前它保存在英语中,因为它是我在WPML中的默认语言)。

以下是我尝试过的:

function save_form_to_post( $posted_data ) {

    $args = array(
        \'post_type\' => \'projects\',
        \'post_status\'=> \'draft\',
        \'post_title\'=> wp_strip_all_tags( $posted_data[\'title\'] ),
        \'post_content\'=> wp_strip_all_tags( $posted_data[\'pitch\'] ),
    );
    $post_id = wp_insert_post($args);

    if( $posted_data[\'language\'] == \'Spanish\' || $posted_data[\'language\'] == \'German\' || $posted_data[\'language\'] == \'French\' ) {
        if( $posted_data[\'language\'] == \'Spanish\' ) {
            $set_language_args = array(
                \'element_id\' => $post_id,
                \'element_type\'  => \'projects\',
                \'language_code\' => \'es\'
            );
            $cat_ID = 729;
        } elseif( $posted_data[\'language\'] == \'German\' ) {
            $set_language_args = array(
                \'element_id\' => $post_id,
                \'element_type\'  => \'projects\',
                \'language_code\' => \'de\'
            );
            $cat_id = 726;
        } elseif( $posted_data[\'language\'] == \'French\' ) {
            $set_language_args = array(
                \'element_id\' => $post_id,
                \'element_type\'  => \'projects\',
                \'language_code\' => \'fr\'
            );
            $cat_id = 725;
        }
        do_action( \'wpml_set_element_language_details\', $set_language_args );
    } else {
        $cat_id = 723;
    }
    wp_set_object_terms( $post_id, $cat_id, \'project_category\' );

    return $posted_data;
}
add_filter( \'wpcf7_posted_data\', \'sep_save_screenplay_form\' );
因此,根据前端表单上选择字段的值设置语言。然后我试着用wpml_set_element_language_details 钩子定义帖子的语言(每个帖子都没有翻译)。最后,我为这篇文章设置了分类法。

现在,这篇文章只保存英语,而不保存其他语言。有人能给我解释一下为什么它不起作用以及如何使它起作用吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:Shibi 整理而成

这个wpml_set_element_language_details 行动element_type 需要使用WPML使用的正确前缀:

来自WPML文档

element_type(字符串)元素的类型。可以是帖子类型:post\\u post、post\\u page、post\\u attachment、post\\u nav\\u menu item、post\\u{自定义帖子键}或分类法:tax\\u category、tax\\u post\\u tag、tax\\u nav\\u menu、tax\\u{自定义分类键}。如果未设置,则默认为post\\u post。

对你来说应该是post_projects 但您也可以使用wpml_element_type 要获得正确的前缀,请执行以下操作:

$element_type = apply_filters(\'wpml_element_type\', \'projects\');

Resources:

https://wpml.org/wpml-hook/wpml_set_element_language_details/

https://wpml.org/wpml-hook/wpml_element_type/

相关推荐