No se muestran publicaciones de tipos de entradas personalizadas

10 feb 2015, 16:41:38
Vistas: 2.49K
Votos: 1

He creado una plantilla personalizada y estoy intentando obtener publicaciones personalizadas del tipo "song", pero solo muestra el encabezado y el pie de página. No aparece el contenido de las publicaciones. Incluso si intento llamar a publicaciones generales, tampoco aparece contenido. ¿Debo registrar esta plantilla en algún lugar del tema? ¿O necesito llamar a algo aquí?

Mi código:

<?php 
/* Nombre de la plantilla: Página de canciones
 *
 * Seleccionable desde un menú desplegable en la pantalla de edición de página.
 */

get_header(); ?>

<div>

<?php 
if ( have_posts() ) {
   while ( have_posts() ) {
      the_post(); 
      query_posts( 'post_type=song'); 
   } // fin del while
} // fin del if
?></div>

<?php get_footer(); ?>

Por favor, ayuda a corregir mi código. Quiero mostrar todas las publicaciones del tipo de entrada personalizada "songs". Ya he creado el tipo de entrada personalizada.

Estoy colocando el código anterior en el editor de WordPress, tengo instalado un plugin llamado "PHP execution" para que ejecute código PHP.

5
Comentarios

¿Esto es parte de una página de archivo para el tipo de entrada personalizado?

Manny Fleurmond Manny Fleurmond
10 feb 2015 17:36:52

Quiero mostrar todas las entradas del tipo de entrada personalizado "canciones". ¿Dónde quieres mostrar estas entradas?

Brad Dalton Brad Dalton
10 feb 2015 19:12:14

@PieterGoosen - Sí, lo he aceptado.

rahul bhatt rahul bhatt
11 feb 2015 15:34:11

@BradDalton - He creado una plantilla personalizada. Como código en esa plantilla, he llamado al encabezado, pie de página y antes del bucle para obtener publicaciones de tipo personalizado, pero en la página solo aparecen el encabezado y el pie de página :(

rahul bhatt rahul bhatt
11 feb 2015 15:35:09

@MannyFleurmond - No...

rahul bhatt rahul bhatt
11 feb 2015 15:38:32
Todas las respuestas a la pregunta 5
6

Tienes dos errores importantes en tu código:

  • query_posts debe ir antes de tu bucle, no dentro de él

  • Nunca uses query_posts en primer lugar a menos que necesites romper algo en tu página

Para aprender por qué no usar query_posts y cuándo usar una consulta personalizada y cómo usarla, revisa esta publicación que hice hace un tiempo

Entonces, para corregir tu código en tu plantilla, vamos a hacer uso de WP_Query y no de query_posts, y vamos a hacer la consulta antes del bucle

Prueba con algo así:

<?php 
 /* Plantilla Nombre: Página de Canciones
 *
 * Seleccionable desde un menú desplegable en la pantalla de edición de página.
 */
?>

<?php get_header(); ?>

<div>

    <?php 
    $args = array(
        'post_type' => 'song' // Tipo de publicación: canción
    );
    $q = new WP_Query($args);
    if ( $q->have_posts() ) {
        while ( $q->have_posts() ) {
            $q->the_post(); 

            // Añade tus etiquetas de plantilla como se muestra a continuación
            the_title(); // Muestra el título

        } // fin del while
        wp_reset_postdata(); // Restablece los datos de la publicación
    } // fin del if
    ?>

</div>

Además, nunca olvides restablecer las consultas personalizadas si has usado el bucle o setup_postdata($post) con wp_reset_postdata()

11 feb 2015 16:01:06
Comentarios

Muchas gracias por la respuesta. Usando el código anterior solo obtengo el nombre de la publicación, pero necesito mostrar el título de la publicación con la miniatura y un poco de contenido. ¿Debo llamar a the_content()?

rahul bhatt rahul bhatt
11 feb 2015 16:14:38

Sí, deberías agregar lo que necesites, esto es solo lo básico. Para el contenido, necesitarás agregar the_content();. Todavía necesitas agregar todo tu marcado HTML también. Esta sección es de preferencia personal, algo en lo que no puedo ayudarte :-)

Pieter Goosen Pieter Goosen
11 feb 2015 16:16:46

Para un diseño básico de plantilla, echa un vistazo a los temas incluidos como twentyfifteen. Esto debería darte un buen punto de partida

Pieter Goosen Pieter Goosen
11 feb 2015 16:17:46

¿Cómo puedo llamar al estilo CSS predeterminado de las publicaciones para esta publicación personalizada? Solo quiero que mi publicación personalizada también se muestre correctamente como una publicación normal en términos de estilo/CSS.

rahul bhatt rahul bhatt
12 feb 2015 10:44:08

Simplemente copia tu bucle entre la parte del while desde tu index.php y agrégalo en el bucle aquí. Como dije, esa es una sección de preferencia personal que tendrás que resolver por ti mismo desafortunadamente. Nunca podré conocer los estilos de tu tema. Es por eso que esta sección está fuera de tema aquí :-)

Pieter Goosen Pieter Goosen
12 feb 2015 10:57:06

De acuerdo... Déjame intentarlo..:)

rahul bhatt rahul bhatt
12 feb 2015 14:12:47
Mostrar los 1 comentarios restantes
0

No necesitas crear ninguna plantilla si simplemente quieres listar todas las páginas en un archivo para tu tipo de entrada personalizado (CPT):

Simplemente ve a http://example.com/canciones y WordPress mostrará todas tus páginas CPT en un archivo estándar según la Jerarquía de Plantillas. Cambia example.com por tu dominio.

Puede que necesites volver a guardar tus Enlaces Permanentes para limpiar las reglas de reescritura e incluir los siguientes parámetros en tu función register_post_type:

'has_archive' => true,

'rewrite' => array( 'slug' => 'canciones', 'with_front' => false ),

Si quieres crear una página personalizada para tu archivo CPT, crea un nuevo archivo y nómbralo archive-cancion.php en el directorio raíz de tu tema.

11 feb 2015 17:32:37
0

Ve a Ajustes > Enlaces permanentes y simplemente haz clic en el botón "Guardar cambios". Ahora actualiza la página.

11 nov 2020 12:27:17
2
-1

O incluso

query_posts( 'post_type=canción');
10 feb 2015 22:37:42
Comentarios

¿Podrías agregar más explicación sobre por qué esto funcionaría o por qué esto es una respuesta a la pregunta?

Howdy_McGee Howdy_McGee
10 feb 2015 22:54:37

Solo quise decir que pruebes 'post_type=song' en lugar de 'post_type=songs' Disculpa por la confusión

Mike Mike
10 feb 2015 23:03:45
0
-2

¿Has probado 'post_type' => 'songs'?

Referencia: Consultas por Tipo de Post

10 feb 2015 17:13:26