Skip Navigation

Resolved by author

Topic Tags: Compatibility

Overview of the issue

In WPRentals theme theme, when users switch the language on their website, invoices might not be displayed correctly across all languages.

Workaround

Please, make sure of having a full backup of your site before proceeding.

  • Open the …/wp-content/themes/wprentals/user_dashboard_invoices.php file.
  • Look for line 48.
  • Replace:
    <?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);
    
  • With:
    <?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);
    

Leave a Reply

Please stay on topic and be respectful to others. If you need help with issues not related to this post, use our Support Forum to start a chat or submit a ticket.

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>