Endpoint con paginación
-
Buenas, mi problema es que a los posts les he añadido un endpoint ‘blog’, que me redirige a un template personalizado con una WP_Query personalizada.
Lo que he hecho:
– En init, he añadido el endpoint:
add_rewrite_endpoint( 'blog', EP_PERMALINK );
– En template_redirect le añado mi redirección:
// For the blog endpoint if( is_singular() && (get_query_var( 'blog' ) )) { $post = get_queried_object(); $out = array( 'id' => $post->ID, 'title' => $post->post_title, 'content' => $post->post_content ); include(locate_template('customtemp-template.php')); exit(); }
add_filter( 'request', 'my_rewrite_filter_request' ); function my_rewrite_filter_request( $vars ) { if( isset( $vars['blog'] ) ) $vars['blog'] = true; return $vars; }
– En el template, tengo una query customizada:
global $paged; global $wp_query; $temp = $wp_query; $wp_query= null; $args = array( 'posts_per_page' => 1, 'post_type' => 'customtype', 'meta_key' => 'mimeta', 'meta_value' => $post->ID, 'paged' => $paged ); $wp_query = new WP_Query($args);
He conseguido mostrar los links a los siguientes y anteriores posts (next_posts_link( ‘Anteriores’ ) y previous_posts_link( ‘Siguientes’ )) y me dan las URL’s paginadas:
http://mysite/post-slug/blog/page/2/Para que me lleve correctamente a la página, le he añadido una rewrite rule:
add_rewrite_rule( '([^/]+)/blog/page/([0-9]{1,})/?$', '$matches[1]&blog=1&paged=$matches[1]', 'top' );
Hasta aquí, todo correcto, me lleva a la página y me muestra el contenido del template, pero lo que no consigo por ninguna parte es la página, es decir, si entro en http://mysite/post-slug/blog/page/2/ me muestra el contenido de la primera página, no de la segunda.
- El debate ‘Endpoint con paginación’ está cerrado a nuevas respuestas.