WPML - Задает язык вставляемого сообщения


У меня есть контактная форма 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, чтобы определить язык для сообщения (каждое сообщение не имеет перевода). И, наконец, я установил таксономию для этого поста.

Прямо сейчас сообщение сохраняется только на английском языке, а не на других языках. Может ли кто-нибудь объяснить мне, почему это не работает и как заставить это работать?

Большое спасибо.

Author: Pipo, 2018-01-19

1 answers

Действие wpml_set_element_language_details element_type должно быть с правильным префиксом, который использует WPML:

Из документов WPML

Элемент_тип(строка) Тип элемента. Может быть тип записи: post_post, post_page, post_attachment, post_nav_menu_item, post_{пользовательский ключ записи} или таксономия: tax_category, tax_post_tag, tax_nav_menu, tax_{пользовательский ключ таксономии}. По умолчанию используется значение post_post, если не задано.

В вашем случае это должно быть post_projects, но вы также можете использовать wpml_element_type, чтобы получить правильный префикс вот так:

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

Ресурсы:

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

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

 1
Author: Shibi, 2018-01-19 19:00:11