- Status
- Vom Autor gelöst
- Gelöst in
- Bricks 2.0
- Zugehöriges Plugin/Theme
- Bricks
- Themen-Tags
- Compatibility
Übersicht über das Problem
Wenn im Bricks Theme eine Template-Bedingung so eingestellt ist, dass die Anzeige nur für bestimmte Begriffe (z. B. eine bestimmte Kategorie) erfolgt, wird die Bedingung in den übersetzten Templates nicht korrekt angewendet.
Problemumgehung
Bitte stellen Sie sicher, dass Sie ein vollständiges Website-Backup Ihrer Website haben, bevor Sie fortfahren.
Teil I
- Gehen Sie zu WPML > Einstellungen > Benutzerdefinierte Felder.
- Suchen Sie die Zeile mit dem Feld
_bricks_template_settings. - Setzen Sie es auf Kopieren
Teil II
- Öffnen Sie die Datei functions.php Ihres Themes.
- Fügen Sie den folgenden Code hinzu:
/** * 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; }