Me gustaría utilizar un archivo de tipo de publicación personalizado como página principal de un sitio, para que
http://the_site.com/
es un archivo de tipo de mensaje personalizado que se muestra según mi archive-{post-type}.php
archivo.
Idealmente, me gustaría alterar la consulta usando is_front_page()
en mi functions.php
archivo. Intenté lo siguiente, con una página llamada "Inicio" como mi página principal:
add_filter('pre_get_posts', 'my_get_posts');
function my_get_posts($query){
global $wp_the_query;
if(is_front_page()&&$wp_the_query===$query){
$query->set('post_type','album');
$query->set('posts_per_page',-1);
}
return $query;
}
pero la página principal está devolviendo el contenido de "Inicio" y parece estar ignorando la consulta personalizada.
¿Qué estoy haciendo mal? ¿Hay una mejor manera, en general, de hacer esto?
Respuestas:
Después de establecer una página estática como página de inicio, puede agregarla a su página
functions.php
y ya está listo. Esto también llamará a laarchive-POSTTYPE.php
plantilla correctamente.fuente
if(is_admin()) return;
desde el principio, de lo contrario, se mete con el área de administración.Cambie el nombre de su archivo CPT a home.php
Luego use pre_get_posts para alterar la consulta de la página de inicio para que solo se muestre la CPT
Reemplace your-cpt con el nombre de su tipo de publicación personalizada.
fuente
Gracias por la respuesta ljaas: estaba buscando resolver este problema exacto. Para poder llamar a la plantilla de archivo de tipo de publicación personalizada, tuve que agregar las siguientes condiciones:
fuente
Esto funciona mejor para mí al anular las publicaciones de blog y la página estática en Configuración> Lectura> Visualizaciones de la página principal:
Lo estoy usando junto con una anulación de plantilla usando los filtros
front_page_template
yhome_template
para devolver una plantilla personalizada.fuente
Para mí, rompe la paginación: ya sea que seleccione el índice o una página estática como página de inicio, aparecen los enlaces de paginación, pero al hacer clic en la página 2 obtengo:
Creo que necesita algunas reglas de reescritura para captar el argumento paginado y pasarlo correctamente.
De todos modos, una página de plantilla personalizada debería ser la solución con algunas reglas de reescritura adicionales.
fuente