No es necesario eso, con pre_get_posts le puedes decir el número de entradas del post type que quieres mostrar y te conserva la paginación.
Aquí tienes ejemplos
https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts#Changing_the_number_of_posts_per_page.2C_by_post_type
Perdona @lgrusin. Exactamente, ¿qué no es necesario de mi código?
Aún así, la parte de obtener solo un post por página funciona. El problema es cuando le doy a ver anteriores, que cuando debería salir la página nº 2, me sale un error 404
Lo que quiero decir es que no es necesario modificar ningún archivo del tema o crear una nueva consulta.
Según el ejemplo del enlace anterior, algo asi en el functions.php, o plugin de funciones propias, debería funcionar:
function hwl_home_pagesize( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_post_type_archive( 'podcast' ) ) {
// Display 1 posts for a custom post type called 'podcast'
$query->set( 'posts_per_page', 1 );
return;
}
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );
Incluso la redirección no me parece necesaria.
@lgrusin tal como menciono en el primer post, el motivo de crear un archive-podcast es porque el plugin que utilizo no permite la personalización y, siguiendo su documentación oficial, esa era la única forma.
He probado ese código que me mencionas pero sigue sin funcionar. He liberado también la caché de los enlaces permanentes y tampoco ha dado resultado.
En condiciones normales si accedes mediante ‘tudominio.com/podcast’ ya salen todos los posts que pertenecen al Custom Post Type podcast, con paginación.
el motivo de crear un archive-podcast es porque el plugin que utilizo no permite la personalización
El plugin no debería intervenir para nada. Es cuestión de plantillas del tema.
Si quieres una página personalizada de los podcasts crea un archivo llamado archive-podcast.php (tal como creo que has hecho) con tus modificaciones (suponiendo que el Custom Post Type se llame podcast). Puedes partir del archivo archive.php que viene con el tema.
El código anterior que he puesto modifica el número de posts a mostrar manteniendo la paginación. No es necesario crear una una nueva consulta (query), porque pierdes la paginación.
Es posible si has estado haciendo pruebas que debas actualizar los permalinks.
Deberías quitar la redirección y partir desde el principio.
-
Esta respuesta fue modificada hace 4 años, 10 meses por LGrusin.
@lgrusin Pero para aplicar los ajustes de CSS y demás que quiero implementar, necesito utilizar una query para indicarle que quiero realizar por cada capítulo, ¿no? Es decir, si no hago una nueva query, ¿cómo aplico lo siguiente?
if( $loop->have_posts() ):
while( $loop->have_posts() ): $loop->the_post(); global $post;
echo '<div id="podcast_archive">';
echo '<a href="' . get_the_permalink() . '"><div class="img_episode">' . get_the_post_thumbnail( $id, array(200,200) ) . '</div></a>';
echo '<a href="' . get_the_permalink() . '"><h2 class="title_episode">' . get_the_title() . '</h2></a>';
echo '<a href="' . get_the_permalink() . '"><div class="excerpt_episode"><p>' . get_the_excerpt() . '</p></div></a>' ;
echo '</div>';
endwhile;
No importa, el bucle while se conserva pero con tus modificaciones:
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
echo '<div id="podcast_archive">';
echo '<a href="' . get_the_permalink() . '"><div class="img_episode">' . get_the_post_thumbnail( $id, array(200,200) ) . '</div></a>';
echo '<a href="' . get_the_permalink() . '"><h2 class="title_episode">' . get_the_title() . '</h2></a>';
echo '<a href="' . get_the_permalink() . '"><div class="excerpt_episode"><p>' . get_the_excerpt() . '</p></div></a>' ;
echo '</div>';
endwhile;
Otra cosa es que esté bien hecho, creo que te sobra y te falta algo. Fijate del archive.php de tu tema. Si nos dices el tema igual iríamos más rápido, que no sea comercial claro.
Por cierto, ¿has leído la documentación del plugin?
https://support.castos.com/article/29-creating-custom-podcast-templates
-
Esta respuesta fue modificada hace 4 años, 10 meses por LGrusin.
-
Esta respuesta fue modificada hace 4 años, 10 meses por LGrusin.
@lgrusin Si, precisamente de la documentación del plugin entendí que debía crear un archive-podcast.
Respecto al theme, es comercial. Es un child theme de Genesis Framework (business-pro-theme, para ser más exacto).
Estoy intentando aplicar eso que me dices pero no lo consigo. He visto que la paginación funciona porque en Ajustes>Lectura he indicado que solo salga una entrada por página, pero no es lo que busco. Este es el código que tengo actualmente en archive-podcast:
add_action( 'business_page_header','tituloPodcast',1 );
function tituloPodcast() {
echo '<h1>Podcast</h1>';
}
//------------------------------------------------------------------------------
remove_action ('genesis_loop', 'genesis_do_loop'); // Remove the standard loop
add_action( 'genesis_loop', 'custom_do_grid_loop' ); // Add custom loop
add_action( 'genesis_before_loop', 'nombre_archivo' );
function nombre_archivo(){
echo '<p class="title_archive">Todos los capítulos</p>';
}
function hwl_home_pagesize( $query ) {
if ( is_admin() || ! $query->is_main_query() )
return;
if ( is_post_type_archive( 'podcast' ) ) {
// Display 1 posts for a custom post type called 'podcast'
$query->set( 'posts_per_page', 1 );
return;
}
}
add_action( 'pre_get_posts', 'hwl_home_pagesize', 1 );
function custom_do_grid_loop() {
if ( have_posts() ) :
while ( have_posts() ) :
the_post();
echo '<div id="podcast_archive">';
echo '<a href="' . get_the_permalink() . '"><div class="img_episode">' . get_the_post_thumbnail( $id, array(200,200) ) . '</div></a>';
echo '<a href="' . get_the_permalink() . '"><h2 class="title_episode">' . get_the_title() . '</h2></a>';
echo '<a href="' . get_the_permalink() . '"><div class="excerpt_episode"><p>' . get_the_excerpt() . '</p></div></a>' ;
echo '</div>';
endwhile;
endif;
}
/** Remove Post Info */
remove_action('genesis_before_post_content','genesis_post_info');
remove_action('genesis_after_post_content','genesis_post_meta');
genesis();
Esto me sigue mostrando más de un capítulo del podcast en el archive.
@lk2_89 como te dije antes el código que he puesto va en el archivo functions.php del tema, en este caso del tema hijo.
Te aconsejo que empieces por lo más fácil:
1 – Olvida el archivo archive-podcast.php
2 – Añade el código en el functions.php del tema hijo.
Una vez veas que la paginación de los posts va según lo que has puesto en Ajustes – Lectura, y que la paginación de los podcast va según lo que indiques en el código añadido al functions.php entonces creas el archive-podcast.php y vas haciendo pequeños cambios en él.
@lgrusin Tienes toda la razón, ha sido fallo mío al estar ya liado entre el archive-podcsat y el fichero de funciones personalizadas que creé.
Ahora me muestra correctamente la paginación. Solo me queda seguir peleándome para que el loop muestre los episodios como yo quiero ^^
@lgrusin nada, no consigo la manera de mostrar el loop como yo quiero…
Es que no sé lo que quieres hacer exactamente. Tienes todas las configuraciones en el menú Podcast – Ajustes – General.
Si solo es aplicar estilos, igual lo solucionas añadiendo estilos CSS desde el menú Apariencia – Personalizar – CSS adicional.
Por cierto, hay una extensión para Genesis Framework, no sé en qué te puede afectar.
@lgrusin Lo que intento hacer es mostrar el archive con este estilo, tal como tenía antes:
echo '<div id="podcast_archive">';
echo '<a href="' . get_the_permalink() . '"><div class="img_episode">' . get_the_post_thumbnail( $id, array(200,200) ) . '</div></a>';
echo '<a href="' . get_the_permalink() . '"><h2 class="title_episode">' . get_the_title() . '</h2></a>';
echo '<a href="' . get_the_permalink() . '"><div class="excerpt_episode"><p>' . get_the_excerpt() . '</p></div></a>' ;
echo '</div>';
Ya que me interesa a nivel SEO que cada capítulo esté en h2 con su extracto, de ahí que originalmente modificara la query para sacar así la información.
Es imposible ayudarte sin tener acceso al código del tema. El mismo soporte del tema puede indicarte como personalizar los archivos, ¿has consultado al autor del mismo?
Creo que no voy a poder contactar con el autor, dado que el theme está sacado de una comunidad en la que se paga una cuota mensual y se tiene acceso a los distintos themes de Genesis.
Al final, tengo el paginado pero no la estructura que necesito… Y antes tenía justo lo contrario.
¡Muchas gracias @lgrusin por tu ayuda y paciencia!
Lo marco como resuelto, dado que la paginación ya funciona.