Forma correcta de crear una página de destino o archivo para tipos de contenido personalizados

17 jun 2015, 20:08:41
Vistas: 14.6K
Votos: 6

Siempre tengo problemas al crear páginas de archivo o de destino para tipos de contenido personalizados y quería saber cómo lo manejan otros.

Si quiero tener una página de destino para un tipo de contenido personalizado, pero necesito que la página de archivo contenga contenido editable (es decir, que sea una página física). Necesitaré crear una plantilla personalizada para mi página de archivo. El problema con esto es que no hay relación entre esta página y el tipo de contenido personalizado. Entonces necesito configurar archive como false y la regla de rewrite para que coincida con el slug del tipo de contenido personalizado. Además, al ver una página individual del tipo de contenido personalizado, el menú no sabe que la página de destino personalizada está activa.

¿Alguien tiene una solución lógica para esto?

1
Comentarios

archive-cpt.php donde cpt es el nombre de tu tipo de publicación personalizado

Brad Dalton Brad Dalton
17 jun 2015 20:11:16
Todas las respuestas a la pregunta 2
0

Para esta situación, creo una plantilla de página personalizada, por ejemplo tpl-archive-page.php. Por ejemplo, usando Advanced Custom Fields y el Post Type Selector Field(*) el usuario puede seleccionar un tipo de contenido para conectar.

<?php
/**
 * Plantilla: Página de Archivo CPT
 */

get_header();

while (have_posts()) :

    the_post();

    get_template_part('content', 'page');

    $archive_query_post_type = get_post_meta(get_queried_object_id(), 'cpt_archive_query_post_type', true);

    if( $archive_query_post_type && is_string($archive_query_post_type) ) {
        $args = array(
            'post_type' => $archive_query_post_type,
            'posts_per_page'=> -1,
            'orderby'       => 'title',
        );

        $archive_query = new WP_Query( $args );

        if ( $archive_query->have_posts() ) {
            while ( $archive_query->have_posts() ) {
                $archive_query->the_post();
                get_template_part('content', get_post_type() );
            }
        }

        wp_reset_postdata();
    }

endwhile;

get_footer();

La opción has_archive al registrar el tipo de contenido personalizado debe establecerse en false.


(*) Si estás usando ACF5/Pro, considera esta versión modificada del campo.

17 jun 2015 20:38:43
0

Yo haría...

  1. Crear un CPT (Custom Post Type) registrado con 'has_archive' => false y usarlo como fuente de "contenido editable".
  2. O usar una simple "Página" si lo prefieres
  3. Luego crear archive-{nombre-del-cpt}.php en el tema y consultar en esa plantilla los datos del CPT de contenido, o los datos de la "Página".
17 jun 2015 20:22:38