- ステータス
- 開発者により解決済み
- 関連するプラグイン/テーマ
- WP Event Manager
- トピックタグ
- Compatibility
問題の概要
WP Event ManagerとWPMLで作成したイベントを翻訳する際、フロントエンドで主催者と会場のフィールドがデフォルト言語で表示されない場合があります。
回避策
続行する前に、必ずサイトの完全なバックアップを作成してください。
以下の変更を行う必要があります。
- 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 : ''; }