WPML
Status
Vom Autor gelöst
Zugehöriges Plugin/Theme
WPRentals
Themen-Tags
Compatibility

Übersicht über das Problem

Im WPRentals theme Theme werden Rechnungen möglicherweise nicht in allen Sprachen korrekt angezeigt, wenn Benutzer die Sprache auf ihrer Website wechseln.

Problemumgehung

Bitte erstellen Sie ein vollständiges Backup Ihrer Website, bevor Sie fortfahren.


  • Öffnen Sie die Datei …/wp-content/themes/wprentals/user_dashboard_invoices.php.

  • Suchen Sie nach Zeile 48.

  • Ersetzen Sie:
    <?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);

  • Durch:
    <?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);

Alle bekannten Probleme →