Página índice para tipo de entrada personalizada

19 dic 2013, 18:26:49
Vistas: 15.3K
Votos: 2

Tengo registrado un tipo de entrada personalizada y quiero crear una página donde listaré algunas entradas, sería como una página índice.

He creado una página de archivo llamada mycpt-archive.php y una página llamada myCPT.php.

Agregué una URL personalizada en el menú llamada "myCPT" así: www.misitio.com/mycpt Ahora, cuando hago clic desde el menú frontal en "myCPT" muestra el contenido de mycpt-archive.php y no el de myCPT.php.

He revisado la jerarquía de plantillas del CODEX y parece que voy por buen camino.

Cuando hago clic en "myCPT" desde el menú frontal, la página que se muestra es mycpt-archive.php no myCPT.php que es lo que espero que se abra.

¿Qué me estoy perdiendo aquí? ¡Gracias!

3
Comentarios

No está claro por qué estás creando dos plantillas para lo que parece una sola tarea? Además, según la jerarquía, el nombre de la plantilla debería estar en formato archive-$posttype.php, así que no estoy seguro de cómo se carga tu variante invertida.

Rarst Rarst
19 dic 2013 18:29:17

Necesito dos páginas, una para listar algunas entradas del tipo de contenido personalizado que debería ser la predeterminada. Y otra para listar un archivo de todas las entradas dentro de ese tipo de contenido personalizado que será el archive-myCPT.php

agis agis
19 dic 2013 19:48:55

La idea es tener una plantilla de página que se usará para mostrar algunas entradas del tipo de contenido personalizado pero que no se muestren en el archive-myCPT.php o que no se muestre por defecto si es una plantilla?

agis agis
19 dic 2013 20:13:44
Todas las respuestas a la pregunta 2
1

Si tienes:

register_post_type( 'my_custom_post_type', $args );

Y necesitas una página personalizada para mostrar todas las entradas de este tipo de contenido personalizado, tienes que crear: archive-my_custom_post_type.php. Pero si no necesitas una página personalizada, WordPress usará archive.php para mostrar el archivo de tu tipo de contenido personalizado.

Si solo necesitas personalizar la página de la entrada individual, tienes que crear: single-my_custom_post_type.php

¿Dónde estás creando el tipo de contenido personalizado, en el functions.php del tema o usando un plugin?

Si usas functions.php, necesitas crear archive-my_custom_post_type.php o single-my_custom_post_type.php en la carpeta del tema.

Si usas un plugin, necesitas crear archive-my_custom_post_type.php o single-my_custom_post_type.php en la carpeta del plugin y decirle a WordPress que lo lea, así que incluye esta función en tu plugin:

function get_custom_post_type_template($template) {
    global $post;

    if ($post->post_type == 'my_custom_post_type') {
        $template = dirname( __FILE__ ) . '/archive-my_custom_post_type.php';
    }
    return $template;
}

//add_filter( "single_template", "get_custom_post_type_template" ); //para página individual
add_filter( "archive_template", "get_custom_post_type_template" ); //para archivo
19 dic 2013 19:06:15
Comentarios

No estoy usando un plugin, solo quiero crear una plantilla de página donde pueda mostrar algunas publicaciones de mi CPT (Custom Post Type) y otra llamada "archive-myCPT.php" para mostrar los archivos allí.

agis agis
19 dic 2013 20:23:05
2

Parece que estás describiendo crear una página de plantilla personalizada con el nombre que desees y colocar el código de consulta personalizado que necesitas en esa plantilla específica. Una vez que creas la plantilla, debes crear una página real en WordPress y configurarla para que use esa plantilla personalizada. ¿Tiene sentido?

  1. Crear una página de plantilla personalizada.
  2. Agregar los comentarios necesarios para nombrar la plantilla.
  3. Escribir la consulta personalizada (wp_query) para obtener las publicaciones específicas que necesitas.
  4. Crear una página dentro de WordPress.
  5. Configurarla para que use la plantilla que creaste.
  6. Publicar.

Una vez que termines, probablemente querrás editar la plantilla para ajustar y refinar tu consulta.

Déjame saber si voy por el camino correcto para lo que necesitas.

19 dic 2013 21:44:42
Comentarios

He creado un archivo de plantilla, pero no puedo asignarlo desde el panel de control, funciona solo para las páginas normales no para las páginas de tipos de entrada personalizados.

agis agis
20 dic 2013 15:13:22

Disculpa la demora en responder. Necesitarás crear un wp_query() personalizado dentro de la plantilla con su propio bucle. Podrías hacer algo como:

`$postTypeQuery = new wp_query( array('post_type'=> 'postTypeSlug'));

if($postTypeQuery->have_posts()){ while($postTypeQuery->have_post(){ $postTypeQuery->the_post(); echo get_the_title(); echo get_the_id(); echo get_the_content(); } }`

MiracleGotMojo MiracleGotMojo
14 ene 2014 01:29:09