- Estado
- Resuelto
- Tipo
- Error
- Registrado para
- WPML Multilingual CMS 3.3.6
- Resuelto en
- 3.3.7
Resumen del problema
Usar wp_get_archives y especificar el argumento post_type para filtrar la visualización de las entradas en la página de archivo de un tipo de contenido personalizado determinado no funciona.
Tenga en cuenta que este problema se introdujo con la versión 4.4 de WordPress.
Ejemplo:
Suponga que tiene un tipo de contenido personalizado con el slug «news» y crea una plantilla de archivo personalizada para ese tipo de contenido personalizado en un tema (archive-news.php).
En ese archivo puede usar el siguiente código para renderizar el archivo:
$my_archives=wp_get_archives(array( 'type'=>'alpha', 'show_post_count'=>true, 'limit'=>20, 'post_type'=>'news', 'format'=>'html' )); print_r($my_archives);
Actualmente, este código no funcionará y no se mostrará ninguna entrada.
Solución alternativa
Antes de realizar cualquiera de los siguientes pasos, asegúrese de comprender que está editando los archivos de su sitio y que esto, si no se hace correctamente, puede hacer que su sitio web deje de funcionar.
Se recomienda encarecidamente que primero pruebe esto en un entorno seguro, o al menos que realice una copia de seguridad completa de su sitio web antes de continuar.
- Abra el archivo
sitepress-multilingual-cms\sitepress.class.php - Vaya a la línea 219
- Reemplace:
add_filter( 'getarchives_join', array( $this, 'getarchives_join' ) );
- Por:
add_filter( 'getarchives_join', array( $this, 'getarchives_join' ), 10, 2 );
- Reemplace:
- Vaya a la línea 3685
- Reemplace:
function getarchives_join( $join ) { return $join . " JOIN {$this->wpdb->prefix}icl_translations t ON t.element_id = {$this->wpdb->posts}.ID AND t.element_type='post_post'"; } - Por:
function getarchives_join( $join, $args ) { $post_type = array_key_exists( 'post_type', $args ) ? $args['post_type'] : 'post'; $post_type = esc_sql( $post_type ); return $join . " JOIN {$this->wpdb->prefix}icl_translations t ON t.element_id = {$this->wpdb->posts}.ID AND t.element_type='post_" . $post_type . "'"; }
- Reemplace: