- Estado
- Resuelto por el autor
- Resuelto en
- Bricks 2.0
- Plugin/tema relacionado
- Bricks
- Etiquetas de temática
- Compatibility
Resumen del problema
En Bricks Theme, cuando una condición de plantilla está configurada para mostrarse solo para términos específicos (por ejemplo, una categoría en particular), la condición no se aplica correctamente en las plantillas traducidas.
Solución alternativa
Por favor, asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.
Parte I
- Vaya a WPML > Configuración > Campos personalizados.
- Busque la línea del campo
_bricks_template_settings. - Establézcalo en Copiar
Parte II
- Abra el archivo functions.php de su tema.
- Añada el siguiente código:
/** * 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; }