Pourquoi "/ page / 2 /" ne fonctionne-t-il pas?
-
-
Jene recommanderaispas de remplacer la requêteprincipale comme ça,avez-vousenvisagé d'utiliser `pre_get_posts`?Ensuite,vouspouvez utiliser le code depaginationintégréplutôt que d'écrire le vôtre,et vouspouvez simplifierjusqu'à uneboucle depublication standardI wouldn't recommend overriding the main query like that, have you considered using `pre_get_posts`? Then you can use the built in pagination code rather than writing your own, and you can simplify down to a standard post loop
- 0
- 2016-02-07
- Tom J Nowell
-
Deplus,WordPressfournit unepage d'archive standardpour lestypes depublication,vous devriez donc déjà avoir une archive depublication à `/videos/` qui chargera `archive-videos.php`,quine nécessitepas de déconner avec les requêtesAlso, WordPress provides a standard archive page for post types, so you should already have a post archive at `/videos/` that will load `archive-videos.php`, that requires no messing around with queries
- 0
- 2016-02-07
- Tom J Nowell
-
3 réponses
- votes
-
- 2012-03-05
J'aitrouvé la réponse:
Après une longuejournée de débogage via wordpress core,j'ai réussi à résoudre ceproblème.
Engros,vous NE POUVEZ PAS avoir une PAGEet un TYPE DE POSTE PERSONNALISÉ Nom.Si vous lefaites,les règles de réécriture dupermalien deviendront confuseset déclencher un 404.
Une solutiontrès simple quej'utiliseest: Lapage qui répertorie les lestypes depublication sont appelés aupluriel (parexemple,produits)et letype depublication réel lenomest au singulier (parexemple,produit).Alorsilsne sontpasen conflitet c'esttout trèsbien.
C'estterminé!J'espère que celaferagagner dutemps auxgens.
Found the answer:
After a looong day debugging thru wordpress core, I managed to solve this issue.
Basicly, you CANT have a PAGE and a CUSTOM POST TYPE with the same name. If you do, the permalink rewrite rules will get confused and trigger a 404.
A very simple solution I'm using is: The page that lists the custom post types is called in plural (eg. products) and the actual post type name is in singular (eg. product). So they dont conflict and it's all fine.
Done Done! Hope this will save people's time.
-
Je suppose quepas seulement un articlepersonnalisé,vousne pouvezpas avoir un articleet unepage avec lemêmenom.I guess, not just custom post, you can't have a post and a page with the same name as well.
- 6
- 2012-03-06
- Rutwick Gangurde
-
- 2016-02-07
Après un longmoment,j'aitrouvé une solution à ceproblème (grâce à franzblog ).
Si vous utilisez la version 4.2 ou supérieure,vous devez ajouter les lignes suivantes dans votrefichier
functions.php
:add_filter( 'redirect_canonical', 'custom_disable_redirect_canonical' ); function custom_disable_redirect_canonical( $redirect_url ) { if ( is_paged() && is_singular() ) $redirect_url = false; return $redirect_url; }
Toutfonctionnebien maintenant!
After a long time I found a solution for this issue (thanks to franzblog).
If you are using version 4.2 or higher, you need to add the following lines in your
functions.php
file:add_filter( 'redirect_canonical', 'custom_disable_redirect_canonical' ); function custom_disable_redirect_canonical( $redirect_url ) { if ( is_paged() && is_singular() ) $redirect_url = false; return $redirect_url; }
Everything is working fine now!
-
- 2015-07-30
vous NE POUVEZpas avoir une PAGEet un TYPE DE POSTE PERSONNALISÉ avec lemêmenom
Peut-être qu'il y a des années d'arbres c'étaitimpossible,maismaintenant vous POUVEZ.
Tout d'abord,ajoutez ces lignes à
$args
dans votretype demessage:'has_archive' => false, 'rewrite' => array( 'slug' => 'your slug', // if you need slug 'with_front' => false, ),
Deuxièmement,dans
functions.php
,ajoutez une action:add_action('init', 'custom_rewrite_basic'); function custom_rewrite_basic() { global $wp_post_types; foreach ($wp_post_types as $wp_post_type) { if ($wp_post_type->_builtin) continue; if (!$wp_post_type->has_archive && isset($wp_post_type->rewrite) && isset($wp_post_type->rewrite['with_front']) && !$wp_post_type->rewrite['with_front']) { $slug = (isset($wp_post_type->rewrite['slug']) ? $wp_post_type->rewrite['slug'] : $wp_post_type->name); $page = get_page_by_slug($slug); if ($page) add_rewrite_rule('^' .$slug .'/page/([0-9]+)/?', 'index.php?page_id=' .$page->ID .'&paged=$matches[1]', 'top'); } } } function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { global $wpdb; $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); return ($page ? get_post($page, $output) : NULL); }
N'oubliezpas de vider les règles dans letableau debord.
you CANT have a PAGE and a CUSTOM POST TYPE with the same name
Maybe tree years ago it was impossible, but now you CAN.
First, add this lines to
$args
into your post type:'has_archive' => false, 'rewrite' => array( 'slug' => 'your slug', // if you need slug 'with_front' => false, ),
Second, in
functions.php
add action:add_action('init', 'custom_rewrite_basic'); function custom_rewrite_basic() { global $wp_post_types; foreach ($wp_post_types as $wp_post_type) { if ($wp_post_type->_builtin) continue; if (!$wp_post_type->has_archive && isset($wp_post_type->rewrite) && isset($wp_post_type->rewrite['with_front']) && !$wp_post_type->rewrite['with_front']) { $slug = (isset($wp_post_type->rewrite['slug']) ? $wp_post_type->rewrite['slug'] : $wp_post_type->name); $page = get_page_by_slug($slug); if ($page) add_rewrite_rule('^' .$slug .'/page/([0-9]+)/?', 'index.php?page_id=' .$page->ID .'&paged=$matches[1]', 'top'); } } } function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { global $wpdb; $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); return ($page ? get_post($page, $output) : NULL); }
Don't forget to flush rules in dashboard.
Enfin,lapaginationfonctionne avec le code ci-dessous,maismaintenant les liens depagination vers/videos/page/2/,quin'existepas.Commentfairefonctionner lapage 2?