Как назначить несколько терминов на разных языках на пост в WordPress (WPML & Formiddle)?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как назначить несколько терминов на разных языках на пост в WordPress (WPML & Formiddle)?

Сообщение Anonymous »

Как назначить несколько терминов на разных языках на пост в WordPress с WPML и грозными формами? Формы и программно присваивают термины в job_listing_category Таксономия в пост с использованием wp_set_object_terms () . Условия добавляются после того, как сообщение создается с использованием FRM_AFTER_CREATE_ENTRY крюк. Br /> [*] На веб-сайте есть два языка: Georgian (Ka-Ge) и русский (RU). < /li>
Списки заданий создаются с использованием грозных форм. < /li>
Крюк FRM_AFTER_CREATE_ENTRY используется для назначения Условий после создания после посты. li> Если список редактируется на грузинском сайте (не на панели администратора) и сохраняется, грузинские термины также добавляются автоматически. Отфильтруйте термины.

Что я делаю? FRM_AFTER_CREATE_ENTRY Hook:

Код: Выделить всё

add_action('frm_after_create_entry', function ($entry_id, $form_id) {
if ($form_id != 18) { // Form ID
return;
}

$entry = FrmEntry::getOne($entry_id);
if (!$entry->post_id) {
return;
}

$post_id = $entry->post_id;

// Get current post terms
$current_terms = wp_get_post_terms($post_id, 'job_listing_category', ['fields' => 'ids']);

// Get translated term IDs
$translated_term_id_en = apply_filters('wpml_object_id', $current_terms[0], 'job_listing_category', false, 'en');
$translated_term_id_ge = apply_filters('wpml_object_id', $current_terms[0], 'job_listing_category', false, 'ka-ge');

// Set terms
$result = wp_set_object_terms($post_id, [$translated_term_id_en, $translated_term_id_ge], 'job_listing_category');

error_log(print_r([$translated_term_id_en, $translated_term_id_ge], true)); // Expected [322, 358]
error_log(print_r($result, true)); // Actually getting [322, 322]

}, 10, 2);
ожидаемый результат: [/b]
  • Пост должен иметь оба термина:
  • один на английском (

    Код: Выделить всё

    translated_term_id_en
    ).
  • один на грузинском языке (

    Код: Выделить всё

    translated_term_id_ge
    ).
  • wpml не должен переопределять термины при переключении языков.
    фактический результат:
  • Код: Выделить всё

    $translated_term_id_en = 322
    , $ translated_merm_id_ge = 358 .
  • После WP_Set_object_terms () , WPML заменяет второй термин. [322, 322] .
Что я пробовал?
< ol>
Отключение фильтрации терминов WPML перед назначением Условий:

Код: Выделить всё

remove_filter('get_the_terms', 'wpml_get_object_terms_filter', 10);< /code>
wpml по -прежнему заменяет термины после переключения языков. Тот же процесс не работает программно. Правильно назначить несколько терминов на разных языках в пост в WordPress + WPML внутри FRM_AFTER_CREATE_ENTRY 
Hook, чтобы WPML не переопределяет их при переключении языков?>

Подробнее здесь: https://stackoverflow.com/questions/794 ... press-wpml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»