WPML
Statut
Résolu
Résolu dans
WPML 4.7
Extension/thème associé
Premium Addons for Elementor
Étiquettes de sujet
Compatibility

Aperçu de l’anomalie

Lorsque vous utilisez l’extension Premium Addons for Elementor, le widget Blog n’affiche pas les articles dans les langues secondaires si vous incluez ou excluez des catégories d’articles.

Solution de contournement

Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.


  • Ouvrez le fichier functions.php de votre thème.

  • Ajoutez l’extrait suivant :
    // WPML Workaround for compsupp-7625
    add_action( 'elementor/frontend/widget/before_render', 'wpml_compsupp7625_modify_premium_blog_tax_filter', 10, 1 );
    
    function wpml_compsupp7625_modify_premium_blog_tax_filter( $widget ) {
        // Check if this is the Premium Blog widget
        if ( 'premium-addon-blog' !== $widget->get_name() ) {
            return;
        }
    
        $settings = $widget->get_settings();
    
        // Check if WPML is active
        if ( class_exists('Sitepress') ) {
            // Get the active languages from WPML
            $languages = apply_filters('wpml_active_languages', NULL, array('skip_missing' => 0));
    
            $post_type = $settings['post_type_filter'];
            $filter_types = array('category', 'tag', 'author');
    
            foreach ($filter_types as $filter_type) {
                $filter = ($filter_type === 'tag') ? 'post_tag' : $filter_type;
                $setting_key = "tax_{$filter}_{$post_type}_filter";
    
                if (isset($settings[$setting_key]) && is_array($settings[$setting_key])) {
                    $modified_filters = $settings[$setting_key];
    
                    foreach ($settings[$setting_key] as $filter_term_slug) {
                        $term_object = get_term_by('slug', $filter_term_slug, $filter);
                        if ($term_object) {
                            $filter_term_id = $term_object->term_id;
    
                            foreach ($languages as $language) {
                                $translated_term_id = apply_filters('wpml_object_id', $filter_term_id, $filter, false, $language['language_code']);
    
                                if ($translated_term_id) {
                                    $translated_term_object = get_term_by('id', $translated_term_id, $filter);
                                    if ($translated_term_object && !in_array($translated_term_object->slug, $modified_filters)) {
                                        $modified_filters[] = $translated_term_object->slug;
                                    }
                                }
                            }
                        }
                    }
    
                    $settings[$setting_key] = $modified_filters;
                }
            }
    
            $widget->set_settings($settings);
        }
    }

Toutes les anomalies connues →