- Statut
- Résolu par l’auteur
- Résolu dans
- Bricks 2.0
- Extension/thème associé
- Bricks
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Dans Bricks Theme, lorsqu’une condition de modèle est définie pour s’afficher uniquement pour des termes spécifiques (par exemple, une catégorie particulière), la condition ne s’applique pas correctement dans les modèles traduits.
Solution de contournement
Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.
Partie I
- Allez dans WPML > Paramètres > Champs personnalisés.
- Recherchez le champ
_bricks_template_settings. - Définissez-le sur Copier
Partie II
- Ouvrez le fichier functions.php de votre thème.
- Ajoutez le code suivant :
/** * WPML Workaround for compsupp-7667 */ add_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10, 4); function wpml_compsupp7667_bricks_translate_template_conditions($value, $post_id, $key, $single) { if ($key !== '_bricks_template_settings') { return $value; } // Remove filter temporarily to avoid infinite loop remove_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10); // Get all meta values $raw_values = get_post_meta($post_id, $key, false); // Add filter back add_filter('get_post_metadata', 'wpml_compsupp7667_bricks_translate_template_conditions', 10, 4); // If we have no values, return the original if (empty($raw_values)) { return $value; } // Process the array structure foreach ($raw_values as &$settings) { if (is_array($settings) && isset($settings['templateConditions'])) { foreach ($settings['templateConditions'] as &$condition) { if (!empty($condition['archiveTerms']) && is_array($condition['archiveTerms'])) { foreach ($condition['archiveTerms'] as &$termString) { if (strpos($termString, '::') !== false) { list($taxonomy, $termId) = explode('::', $termString); $translatedId = apply_filters('wpml_object_id', intval($termId), $taxonomy, true); if ($translatedId) { $termString = $taxonomy . '::' . $translatedId; } } } } } } } return $raw_values; }