WordPress : single-type.php ne fonctionne pas, délivrant 404
J’ai créé un type de message personnalisé et j’ai réussi à ajouter quelques entrées. Je peux appeler ces entrées avec query_posts()
pour les afficher sur la page d’accueil, mais the_permalink()
sur chacune d’elles, j’envoie simplement une « Page introuvable » 404.
Est-ce que je manque quelque chose? Je suis actuellement en cours d’exécution sur http://localhost
, donc les résultats de the_permalink()
la boucle de type de publication personnalisée de la page d’accueil envoient l’utilisateur à http://localhost/PU/PU2010/website/cartoons/einstein-on-california
.
fonctions.php
function createCartoonPostType() {
register_post_type( 'cartoon', array(
'label' => 'Cartoon',
'public' => true,
'hierarchical' => true,
'supports' => array( 'title', 'editor', 'thumbnail', 'comments' ),
'rewrite' => array( 'slug' => 'cartoons' )
) );
}
add_action( 'init', 'createCartoonPostType' );
D’après cela, je devrais pouvoir simplement créer single-cartoon.php
, n’est-ce pas ?
single-cartoon.php
<?php get_header(); ?>
<div class="container_20">
<div class="grid_14">
<div class="bodybox">
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
</div>
</div>
<div class="grid_6">
<?php get_template_part( 'social', 'box' ); ?>
<?php get_sidebar(); ?>
</div>
<div class="clear"></div>
</div>
<?php get_footer(); ?>
boucles-cartoons.php (boucle de la page d’accueil)
<?php query_posts( 'post_type=cartoon&posts_per_page=1' ); ?>
<div class="cartoons-box">
<ul class="cartoons-list">
<?php if ( ! have_posts() ) : ?>
Sorry, no posts.
<?php else : while ( have_posts() ) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>" class="preview-image">
<?php the_post_thumbnail( 'featured' ); ?>
</a>
</li>
<?php endwhile; endif; ?>
<div class="clear"></div>
</ul>
</div>
<?php wp_reset_query(); ?>
Solution n°1 trouvée
Êtes-vous allé dans Admin -> Paramètres -> Permaliens après avoir configuré le type de publication ? La structure du permalien n’a pas été ajoutée tant que vous n’avez pas fait cela. Cela pourrait être la cause de votre problème.
La page des permaliens se déclenche $wp_rewrite->flush_rules();
à chaque fois que la page est visitée, il n’est donc même pas nécessaire de sauvegarder.
Solution n°2 trouvée
Après avoir enregistré les types de publication personnalisés, vous devez reconstruire les permaliens. Vous pouvez le faire manuellement en visitant Admin -> Paramètres -> Permaliens (comme John l’a commenté), vous pouvez reconstruire des permaliens dans votre code en appelant $wp_rewrite->flush_rules();
ou si vous êtes paresseux, vous pouvez utiliser le Permafrost (WordPress Plugin).
Solution n°3 trouvée
J’ai eu le même problème – et chaque fois que j’ajoutais une nouvelle page, il fallait réinitialiser la structure des permaliens. Ajout de ceci :
flush_rewrite_rules();
dans votre fonction createCartoonPostType() immédiatement après la partie register_post_type résout le problème et signifie que vous n’avez pas besoin d’utiliser la réinitialisation continue des permaliens.
0 commentaire