WordPress : single-type.php ne fonctionne pas, délivrant 404

Publié par Jean-Michel le

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.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *