Как обмениваться настраиваемыми полями метаданных на разных языках с помощью плагина Polylang - PullRequest
1 голос
/ 03 мая 2020

Я строю небольшой плагин в Woocommerce, чтобы добавить несколько пользовательских полей. Это очень просто:

function save_option_fields($post_id) {
  update_post_meta($post_id, '_energy', $_POST['_energy']);
  update_post_meta($post_id, '_fat', $_POST['_fat']);
}
add_action( 'woocommerce_process_product_meta_simple', 'save_option_fields');

Проблема в том, что эти метаданные представляют собой только цифры, их не нужно переводить, и я хочу поделиться ими со всеми другими языками на сайте.

Сейчас все работает нормально, но данные сохраняются только для одного языка (или одного сообщения).

Сайт использует плагин polylang. Я не знаю, есть ли функции WP / W C или даже от самого Polylabg, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 04 мая 2020

Я не пользователь polylang, но если вы пытаетесь сохранить метаданные на всех языках, идея может выглядеть примерно так:

Например ( не проверено ):

function save_option_fields($post_id) {

  update_post_meta($post_id, '_energy', $_POST['_energy']);
  update_post_meta($post_id, '_fat', $_POST['_fat']);

  $languages = array('en','es'); // or use a polylang function to get the site languages in use as an array

  foreach( $languages as $language ) {

    $translated_id = pll_get_post( $post_id, $language ); // this should return the translated id, according to polylang docs

    update_post_meta($translated_id, '_energy', $_POST['_energy']);
    update_post_meta($translated_id, '_fat', $_POST['_fat']);

  }

}
add_action( 'woocommerce_process_product_meta_simple', 'save_option_fields');

Мысли? :)

...