WPML - Почему при создании записи через функцию сбрасывается перевод?
У меня есть сайт на WordPress, в котором установлен плагин мультиязычности WPML. Мой исходный язык сайта - русский. Я хочу сделать так, чтобы выбранный язык пользователей сохранялся в cookie. Это нужно для того, чтобы при повторном входе на сайт - у пользователя сразу открывался язык который он ранее выбирал.
Для этого в header.php после я добавил следующую функцию:
<?php
$default_lang = apply_filters( 'wpml_default_language', null );
if($default_lang!= ICL_LANGUAGE_CODE) {
setcookie('language', ICL_LANGUAGE_CODE, time() + 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
}
if (isset($_COOKIE['language']) && $_COOKIE['language']!= ICL_LANGUAGE_CODE) {
if($_SERVER['HTTP_REFERER']) {
setcookie('language', ICL_LANGUAGE_CODE, time() + 30 * DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN);
}
else {
$wpml_permalink = apply_filters( 'wpml_permalink', get_the_permalink() , $_COOKIE['language'] );
if(isset($wpml_permalink)) {
wp_redirect( $wpml_permalink );
exit;
}
}
} ?>
Она отлично работает. Если я выбираю Английский язык, у меня открывается ссылка site.ru/en. Если в будущем я повторно захожу на сайт по прямой ссылке site.ru - у меня автоматически открывается site.ru/en, то что мне и нужно.
Но есть одна проблема, которую я не могу решить.
В function.php у меня есть такая функция:
// Обработка отправки формы и создание записи
function my_custom_form_submit_handler() {
if ( isset( $_POST['currency_export'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'my_custom_form_nonce' ) ) {
$imaile = sanitize_text_field( $_POST['uemail'] );
$single_ot = sanitize_text_field( $_POST['currency_export'] );
$single_po = sanitize_text_field( $_POST['currency_export2'] );
$single_wallet = sanitize_text_field( $_POST['mywallet'] );
$single_val_op = sanitize_text_field( $_POST['wallet_ot'] );
$single_val_po = sanitize_text_field( $_POST['wallet_po'] );
$single_num = sanitize_text_field( $_POST['single_num'] );
$single_val_minop = sanitize_text_field( $_POST['wallet_minot'] ); // получаем значение из поля wallet_minot
// $user_requisites = sanitize_text_field( $_POST['wallet_reqot'] ); // получаем значение из поля wallet_reqot
$single_val_minpo = sanitize_text_field( $_POST['wallet_minpo'] ); // получаем значение из поля wallet_minpo
$post_data = array(
'post_title' => wp_strip_all_tags( $imaile ),
'post_content' => '',
'post_status' => 'publish',
'post_author' => get_current_user_id(),
'post_type' => 'post'
);
$post_id = wp_insert_post( $post_data );
if ( $post_id ) {
// Сохраняем значения всех полей ACF
update_field( 'single_ot', $single_ot, $post_id );
update_field( 'single_po', $single_po, $post_id );
update_field( 'user_requisites', $single_wallet, $post_id );
update_field( 'single_mail',$imaile, $post_id );
update_field( 'single_val_op', $single_val_op, $post_id );
update_field( 'single_val_po', $single_val_po, $post_id );
update_field( 'single_num', $single_num, $post_id );
update_field( 'single_val_minop', $single_val_minop, $post_id ); // сохраняем значение из поля wallet_minot в поле ACF single_val_minop
// update_field( 'mywallet', $user_requisites, $post_id ); // сохраняем значение из поля wallet_reqot в поле ACF user_requisites
update_field( 'single_val_minpo', $single_val_minpo, $post_id ); // сохраняем значение из поля wallet_minpo в поле ACF single_val_minpo
// Отправляем письмо на указанный адрес
send_email_notification( $post_id, $imaile, $single_ot, $single_po, $single_wallet );
// Перенаправляем пользователя на страницу созданной записи
wp_redirect( get_permalink( $post_id ) );
exit;
}
}
}
add_action( 'admin_post_my_custom_form_submit', 'my_custom_form_submit_handler' );
add_action( 'admin_post_nopriv_my_custom_form_submit', 'my_custom_form_submit_handler' );
С помощью неё я могу создать запись через форму на сайте и у меня произойдёт редирект на эту запись. Проблема заключается в том, что при переадресации на созданную запись мой выбранный язык меняется на стандартный. У меня есть подозрение, что это связано с самими настройками WPML. Каким образом можно сохранять язык при переадресации на запись? Буду крайне признателен за любую помощь, уже несколько дней пытаюсь решить эту проблему :(