web-dev-qa-db-fra.com

Archive de type publication personnalisée 404 avec paginate_links

im using fonction paginate_links pour créer une pagination sur mes archives de type publication personnalisée, peu importe ce que je fais im frappe des erreurs 404 en allant à la page 2 (ie en cliquant pour aller sur une page de la pagination Piste).

J'ai vérifié et étudié et ne semble pas aller nulle part avec tout. heres my avant la requête de boucle dans archive-MY_CUSTOM_POST_TYPE.php:

<?php

global $wp_query;

$args = array_merge( $wp_query->query, array( 'post_type' => 'sales', 'posts_per_page'  => 1, ) );

query_posts( $args );


if (have_posts()) :
while (have_posts()) : the_post();  

et plus bas après les boucles endif et ci-dessus wp_reset_query j'ai

<?php endif; ?>

<div class="clear"></div><!-- / clear -->

<div class="pagination">

<?php 
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] :    $current = 1;

$pagination = array(
'base' => @add_query_arg('page','%#%'),
'format' => '',
'total' => $wp_query->max_num_pages,
'current' => $current,
'show_all' => true,
'type' => 'plain'
);

if( $wp_rewrite->using_permalinks() )
$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 's', get_pagenum_link( 1 ) ) ) . 'page/%#%/', 'paged' );

if( !empty($wp_query->query_vars['s']) )
$pagination['add_args'] = array( 's' => get_query_var( 's' ) );

echo paginate_links( $pagination );
?>

</div><!-- / paginate -->  

Sur my loop-index.php cela fonctionne sans problème, mais sur une boucle à l'intérieur de Custom Post Tapez c'est un no go, je n'ai aucun conflit avec les slugs dupliqués car j'ai lu que cela pouvait être un problème, alors je le prends est quelque chose à voir avec la façon dont im interrogeant les messages avant la boucle, des pointeurs?

cordialement
Martin

5
MartinJJ

Si quelqu'un d'autre a le même problème, ma solution complète est la suivante:
1) dans wp-admin >> paramètres >> lire des messages de blog à afficher en tant que 1.
2) puis remplacez cela dans loop-blog.php par posts_per_page => 10.
3) dans votre publication personnalisée, tapez loop.php, définissez posts_per_page => 5.

Rappelez-vous que ce sont les paramètres que j'ai besoin, vos besoins peuvent être différents, la ligne de fond est, définissez les articles de blog dans wp-admin sur 1, vous pouvez configurer l'autre nombre de posts_per_page selon vos propres besoins.

maintenant tout fonctionne bien, un petit hacky mais au moins, ça marche, alors ma question suivante est >>> est-ce un bug wp?

3
MartinJJ

Le correctif de Martin fonctionne, mais une meilleure solution consiste à utiliser la fonction pre_get_posts.

Exemple:

function custom_type_archive_display($query) {
    if (is_post_type_archive('custom_type')) {
        $query->set('posts_per_page',1);
        return;
    }
}

add_action('pre_get_posts', 'custom_type_archive_display');
5
Nathan Hangen

Je sais que c’est vieux, mais j’ai eu le même problème et je l’ai résolu en modifiant le permalien de la page à l’origine du 404.

En effet, apparemment, vous ne pouvez pas avoir un slug de page avec le même nom que votre type de publication personnalisé.

Nous remercions Ryan S. d’avoir partagé la solution originale: http://www.sutanaryan.com/2013/09/404-error-in-custom-post-type-pagination-wordpress/

0
RAMIREZ