- Статус
- Ожидается ответ автора
- Связанный плагин/тема
- Event Tickets Plus
Обзор проблемы
Если Вы используете плагин Event Tickets Plus для создания нового события и добавления к нему билетов, раздел билетов не отображается на переведенной странице события.
Обходное решение
Пожалуйста, прежде чем продолжить, сделайте полную резервную копию Вашего сайта:
- Добавьте следующий фрагмент в WPML → Настройки → Пользовательская конфигурация XML:
<wpml-config> <custom-fields> <custom-field action="copy">_ticket_end_date</custom-field> <custom-field action="copy">_ticket_start_date</custom-field> <custom-field action="copy">_tribe_ticket_capacity</custom-field> <custom-field action="copy">_tribe_ticket_show_description</custom-field> <custom-field action="copy">_tribe_ticket_version</custom-field> <custom-field action="copy">_tribe_tickets_ar_iac</custom-field> <custom-field action="copy">_tribe_tickets_meta</custom-field> <custom-field action="copy-once">_tribe_wooticket_for_event</custom-field> </custom-fields> </wpml-config> - Добавьте следующий код в файл functions.php:
//WPML Workaround add_action( 'save_post', 'wpmldp_update_tribe_wooticket_for_event_meta', 999,3 ); function wpmldp_update_tribe_wooticket_for_event_meta( $post_id, $post, $update ) { // Only set for post_type = product if ( 'product' !== $post->post_type ) { return; } //Check if WPML and THe Events Calendar are enabled if (class_exists('SitePress')) { //Get the current ID on "_tribe_wooticket_for_event" meta $current_wooticket_id = get_post_meta($post_id, '_tribe_wooticket_for_event'); if ( $current_wooticket_id ) { //Get Post Language $wpml_post_language_details = apply_filters( 'wpml_post_language_details', NULL, $post_id ) ; $wpml_current_language = $wpml_post_language_details['language_code']; //Check if there is a translation for the $current_wooticket_id. If not, returns the original ID $translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'page', FALSE, $wpml_current_language); //Update post meta with the translated ID if ($translated_wooticket_id) { update_post_meta( $post_id, '_tribe_wooticket_for_event', $translated_wooticket_id ); } } } return; } - Создайте мероприятие и добавьте к нему билеты.
- Переведите мероприятие.
- Перейдите в Товары → Все товары и измените билет.
- Внесите небольшое изменение в билет и сохраните.
- Переведите билет. Имейте в виду, что если мероприятие уже существует, Вам просто нужно перевести его до перевода билета. Если оба элемента уже переведены, внесите небольшое изменение в оригинальный билет, а затем обновите перевод.
Если Вы используете плагин The Events Calendar, Вам нужно будет изменить эту строку:
$translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'page', FALSE, $wpml_current_language);На:
$translated_wooticket_id = apply_filters( 'wpml_object_id', $current_wooticket_id[0], 'tribe_events', FALSE, $wpml_current_language);
Дальнейшие действия
Event Tickets Plus и WPML пока не полностью совместимы, но мы хотели бы поработать совместно с командой The Events Calendar, чтобы завершить этот процесс. Если совместимость этого плагина с WPML важна для Вас, пожалуйста, сообщите об этом команде The Events Calendar через их публичный форум поддержки или приватные каналы поддержки, и мы сможем попытаться продвинуть это вместе.