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
, чтобы определить язык для сообщения (каждое сообщение не имеет перевода). И, наконец, я установил таксономию для этого поста.
Прямо сейчас сообщение сохраняется только на английском языке, а не на других языках. Может ли кто-нибудь объяснить мне, почему это не работает и как заставить это работать?
Большое спасибо.
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/