- 状态
- 已由作者解决
- 相关插件/主题
- WPRentals
- 主题标签
- Compatibility
问题概述
在WPRentals 主题中,当用户在其网站上切换语言时,发票可能无法在所有语言中正确显示。
临时解决方法
请在继续操作之前确保已对站点进行完整备份。
- 打开 …/wp-content/themes/wprentals/user_dashboard_invoices.php 文件。
- 找到第 48 行。
- 将:
<?php $args = array( 'post_type' => 'wpestate_invoice', 'post_status' => 'publish', 'posts_per_page' => -1 , 'author' => $userID, 'meta_query' => array( array( 'key' => 'invoice_type', 'value' => esc_html__( 'Reservation fee','wprentals'), 'type' => 'char', 'compare' => 'LIKE' ) ), ); $prop_selection = new WP_Query($args); - 替换为:
<?php /* * >> WPML Workaround for compsupp-7254 */ // Original meta query $meta_query_value = esc_html__( 'Reservation fee','wprentals'); $meta_query_compare = 'LIKE'; // Modify meta_query if WPML is enabled if ( class_exists ('Sitepress') ) { $meta_query_value = []; $meta_query_value[] = esc_html__( 'Reservation fee','wprentals'); $wpml_current_language = apply_filters( 'wpml_current_language', NULL ); $wpml_languages = apply_filters( 'wpml_active_languages', NULL, 'orderby=id&order=desc' ); if ( ! empty( $wpml_languages ) ) { foreach( $wpml_languages as $language ) { // wpml_translate_single_string filter is not working because this string does not have a registered name // Because of that, we will need to switch languages (then restore it later) do_action( 'wpml_switch_language', $language['language_code'] ); $translated_string = esc_html__( 'Reservation fee','wprentals'); if ( ! in_array($translated_string, $meta_query_value) ) { $meta_query_value[] = $translated_string; } } // Restore original language do_action( 'wpml_switch_language', $wpml_current_language ); } $meta_query_compare = 'IN'; } $args = array( 'post_type' => 'wpestate_invoice', 'post_status' => 'publish', 'posts_per_page' => -1 , 'author' => $userID, 'meta_query' => array( array( 'key' => 'invoice_type', 'value' => $meta_query_value, 'type' => 'char', 'compare' => $meta_query_compare, ) ), ); $prop_selection = new WP_Query($args);