WPML
状态
已由作者解决
相关插件/主题
WP Event Manager
主题标签
Compatibility

问题概述

在翻译使用 WP Event Manager 和 WPML 创建的事件时,OrganizerVenue 字段在前端并不总是以默认语言显示。

临时解决方法

在继续操作之前,请务必对您的网站进行完整备份

您需要进行以下更改。


  1. 前往 WPML设置自定义字段翻译

  2. _event_organizer_ids_event_venue_ids 自定义字段设置为复制

  3. 然后,打开 /wp-content/plugins/wp-event-manager/wp-event-manager-template.php 文件。

  4. 找到第 1229 行。

  5. 将:
    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  );
    	}


  6. 接下来,打开 /wp-content/plugins/wp-event-manager/wp-event-manager-functions.php 文件。

  7. 找到第 1903 行。

  8. 将:
    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 : '';
    }

  9. 最后,在同一个文件中,找到第 1985 行。

  10. 将:
    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 : '';
    }

所有已知问题 →