- Статус
- Решено автором
- Связанный плагин/тема
- WP Event Manager
- Теги темы
- Compatibility
Обзор проблемы
При переводе событий, созданных с помощью WP Event Manager и WPML, поля Organizer и Venue не всегда отображаются на языке по умолчанию на фронтенде.
Обходное решение
Перед тем как продолжить, обязательно создайте полную резервную копию Вашего сайта.
Вам потребуется внести следующие изменения.
- Перейдите в WPML → Настройки → Перевод пользовательских полей
- Для произвольных полей _event_organizer_ids и _event_venue_ids установите значение Копировать.
- Затем откройте файл /wp-content/plugins/wp-event-manager/wp-event-manager-template.php.
- Найдите строку 1229.
- Измените:
foreach ($post->_event_organizer_ids as $key => $organizer_id) {на:
foreach ($post->_event_organizer_ids as $key => $organizer_id) { // WPML Workaround for compsupp-6662 if (class_exists('SitePress')) { $organizer_id = apply_filters( 'wpml_object_id', $organizer_id, 'event_organizer', TRUE ); } - Далее откройте файл /wp-content/plugins/wp-event-manager/wp-event-manager-functions.php.
- Найдите строку 1903.
- Измените:
function get_event_organizer_ids( $post = null ) { $post = get_post( $post ); if ( $post->post_type !== 'event_listing' ) return; return !empty($post->_event_organizer_ids) ? $post->_event_organizer_ids : ''; }на:
function get_event_organizer_ids( $post = null ) { $post = get_post( $post ); if ( $post->post_type !== 'event_listing' ) { return; } // WPML Workaround for compsupp-6662 if ( class_exists('SitePress') && !empty($post->_event_organizer_ids) ) { foreach ($post->_event_organizer_ids as $key => $organizer_id ) { $result = $post->_event_organizer_ids; $result[$key] = apply_filters( 'wpml_object_id', $organizer_id, 'event_organizer', TRUE ); } return $result; } return !empty($post->_event_organizer_ids) ? $post->_event_organizer_ids : ''; } - Наконец, в этом же файле найдите строку 1985.
- Измените:
function get_event_venue_ids( $post = null ) { $post = get_post( $post ); if ( $post->post_type !== 'event_listing' ) return; return !empty($post->_event_venue_ids) ? $post->_event_venue_ids : ''; }на:
function get_event_venue_ids( $post = null ) { $post = get_post( $post ); if ( $post->post_type !== 'event_listing' ) return; // WPML Workaround for compsupp-6662 if ( class_exists('SitePress') && !empty($post->_event_venue_ids) ) { $result = apply_filters( 'wpml_object_id', $post->_event_venue_ids , 'event_listing', TRUE ); return $result; } return !empty($post->_event_venue_ids) ? $post->_event_venue_ids : ''; }