2011-04-26 28 views
5

Estoy usando el complemento WP PageNavi para la paginación. Este problema particular al no obtener la página taxonomy-portflio-category.php para paginar también es un problema cuando WP PageNavi está desactivado.La paginación de taxonomía personalizada de Wordpress no funciona

He tenido muchísimo tiempo para obtener la paginación para trabajar en la página de inicio y en la página de una plantilla de página, pero logré que funcionaran. Aquí está el código:

página-home.php (utilizado como una plantilla de página en una página estática frontal llamado “Inicio”)

$paged = 1; 
if (get_query_var('paged')) $paged = get_query_var('paged'); 
if (get_query_var('page')) $paged = get_query_var('page'); 
$i = 0; 
$loop = new WP_Query(array('post_type' => 'portfolio', 'paged' => $paged, 'posts_per_page' => 24)); 
while ($loop->have_posts()) : $loop->the_post(); 
// output 
$i++; endwhile; 
if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(array('query' => $loop)); 
    wp_reset_postdata(); 
} 

obras Paginación!

página-portfolio.php (utilizado como una plantilla de página en una página llamada “Trabajo”)

$i = 0; 
$loop = new WP_Query(array('post_type' => 'portfolio', 'paged' => get_query_var('paged'), 'posts_per_page' => 24)); 
while ($loop->have_posts()) : $loop->the_post(); 
// output 
$i++; endwhile; 
if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(array('query' => $loop)); 
    wp_reset_postdata(); 
} 

funciona Paginación!

taxonomía-cartera category.php (utilizado como una forma de mostrar las secciones de la cartera, por ejemplo, impresión, fotografía, etc.)

$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy')); 
global $wp_query; 
query_posts(array_merge($wp_query->query, array('posts_per_page' => 2))); 
if (have_posts()) : while (have_posts()) : the_post(); 
// output 
endwhile; endif; 
if (function_exists('wp_pagenavi')) { 
    wp_pagenavi(); 
} 

página 1 (/ cartera/interactive /) se ve muy bien! Definitivamente solo publica 2 elementos y calcula el número correcto de páginas de paginación. Pero cuando hace clic en la página 2 o 3 o 4 (/ portfolio/interactive/page/2 /), el sitio se establece de manera predeterminada en index.php y muestra "Página no encontrada". ¡La paginación falla!

Espero poder resolver esto pronto. He visto MUCHAS personas con este mismo problema de paginación en páginas de taxonomía personalizadas, pero no hay soluciones sólidas. ¡Por favor ayuda!

Respuesta

0

Me encontré con un problema similar, ¡me llevó horas buscar en Google! Encontré la solución por fin. Agregue el código siguiente a functions.php en su carpeta de temas:

$option_posts_per_page = get_option('posts_per_page'); 
add_action('init', 'my_modify_posts_per_page', 0); 
function my_modify_posts_per_page() { 
    add_filter('option_posts_per_page', 'my_option_posts_per_page'); 
} 
function my_option_posts_per_page($value) { 
    global $option_posts_per_page; 
    if (is_tax('portfolio-category')) { 
     return 2; 
    } else { 
     return $option_posts_per_page; 
    } 
} 

URL for the solution

2

Es necesario configurar mensajes por página a 24 en la página Configuración -> página de lectura en el administrador de WP. Espero que esto ayude a alguien.

0

Puede ser que usted necesita para habilitar la búsqueda para permitir la paginación

Mientras declarar taxonomía personalizada que debe desactivar la búsqueda excluyendo.

exclude_from_search => false 

Esto solucionó el problema.

+0

favor reme mber para formatear el código con el método correcto al incluirlo en las respuestas. El icono que desea presionar es {} en lugar de ". – mylogon

0

me gustaría compartir siguiente solución (añadir este código a functions.php en su tema):

function fix_taxonomy_pagination ($query) { 
    // not an admin page and it is the main query 
    if (!is_admin() && $query->is_main_query()){ 

    if(is_tax()){ 
     // where 24 is number of posts per page on custom taxonomy pages 
     $query->set('posts_per_page', 24); 

    } 
    } 
} 
add_action('pre_get_posts', 'fix_taxonomy_pagination'); 

source

1

He intentado usar WP-PageNavi pero nunca trabajaron así que utiliza la paginación de Wordpress que sí, he utilizado la forma de función twentyfourteen_paging_nav() Twentyfourteen becuse que tiene una página de taxonomía, aquí está el código:

if (! function_exists('twentyfourteen_paging_nav')) : 
function twentyfourteen_paging_nav() { 
global $wp_query, $wp_rewrite; 

// Don't print empty markup if there's only one page. 
if ($wp_query->max_num_pages < 2) { 
    return; 
} 

$paged  = get_query_var('paged') ? intval(get_query_var('paged')) : 1; 
$pagenum_link = html_entity_decode(get_pagenum_link()); 
$query_args = array(); 
$url_parts = explode('?', $pagenum_link); 

if (isset($url_parts[1])) { 
    wp_parse_str($url_parts[1], $query_args); 
} 

$pagenum_link = remove_query_arg(array_keys($query_args), $pagenum_link); 
$pagenum_link = trailingslashit($pagenum_link) . '%_%'; 

$format = $wp_rewrite->using_index_permalinks() && ! strpos($pagenum_link, 'index.php') ? 'index.php/' : ''; 
$format .= $wp_rewrite->using_permalinks() ? user_trailingslashit($wp_rewrite->pagination_base . '/%#%', 'paged') : '?paged=%#%'; 

// Set up paginated links. 
$links = paginate_links(array(
    'base'  => $pagenum_link, 
    'format' => $format, 
    'total' => $wp_query->max_num_pages, 
    'current' => $paged, 
    'mid_size' => 1, 
    'add_args' => array_map('urlencode', $query_args), 
    'prev_text' => __('&larr; Previous', 'twentyfourteen'), 
    'next_text' => __('Next &rarr;', 'twentyfourteen'), 
)); 

if ($links) : 

?> 

<nav class="pagination-contaner" role="navigation"> 
    <h1 class="screen-reader-text"><?php _e('Posts navigation', 'twentyfourteen'); ?></h1> 
    <ul class="pagination"> 
     <?php echo $links; ?> 
    </ul><!-- .pagination --> 
</nav><!-- .navigation --> 
<?php 
endif; 
} 
endif; 
Cuestiones relacionadas