- 状态
- 已由作者解决
- 相关插件/主题
- 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 : ''; }