custom-post-types – ¿Cómo se usa un CPT como página de inicio predeterminada?

Pregunta:

Tengo un cliente cuyo sitio hará un uso intensivo de tipos de publicaciones personalizadas para configurar su sitio. Pero estoy entre la espada y la pared para la página de inicio solicitada.

En realidad, la página de inicio será una pila de "páginas" específicas dentro de WordPress. Básicamente, habrá páginas para: Introducción , Blog , Acerca de nosotros , Portafolio y Contáctenos . Todos se apilarán uno encima del otro para que pueda desplazarse de una página a otra.

Mi primer instinto fue usar una página (llamada Inicio ) e incrustar un código corto que acepta slugs de página y genera el orden correcto (es decir, [pageOrder]intro, blog, about-us, portfolio, contact-us[/pageOrder] ). La página usaría una plantilla de página personalizada para diseñar las cosas, controlar el bucle y agregar navegación al lado izquierdo de la página. Pero todo eso parece torpe.

Mi solución ideal sería crear un tipo de publicación personalizada (llamada Pila ) que le permita al usuario final colocar las páginas con arrastrar y soltar y hacer que el CPT se encargue del diseño y la navegación y demás.

El problema con mi solución ideal es la configuración. WordPress le permite seleccionar una página para la página de inicio predeterminada del sitio. Pero está vinculado a un tipo de página de publicación, y no estoy seguro de dónde conectarlo para modificarlo para que los usuarios también puedan seleccionar una pila como la página de inicio predeterminada.

Entonces, ¿a dónde me conecto para agregar un CPT al menú desplegable de páginas disponibles para la página de inicio predeterminada?

Respuesta:

Gracias a @toscho por la respuesta útil, pero me pareció un poco hack, así que hurgué un poco y descubrí que podía agregar un filtro en su lugar:

function wpa18013_add_pages_to_dropdown( $pages, $r ){
    if('page_on_front' == $r['name']){
        $args = array(
            'post_type' => 'stack'
        );
        $stacks = get_posts($args);
        $pages = array_merge($pages, $stacks);
    }

    return $pages;
}
add_filter( 'get_pages', 'wpa18013_add_pages_to_dropdown', 10, 2 );

Actualizar

Después de agregar el código anterior, de hecho, pude usar un tipo de publicación personalizada como página de inicio, pero WordPress redirigiría los enlaces permanentes porque no era un tipo de publicación de "página". Entonces http://localhost/test redirigiría a http://localhost/test/stacks/home-stack , que no era lo que quería.

Sin embargo, al agregar esta acción, se corrigió eso y se consulta mi tipo de publicación personalizada junto con las páginas de la página de inicio:

function enable_front_page_stacks( $query ){
    if('' == $query->query_vars['post_type'] && 0 != $query->query_vars['page_id'])
        $query->query_vars['post_type'] = array( 'page', 'stack' );
}
add_action( 'pre_get_posts', 'enable_front_page_stacks' );

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım