web-dev-qa-db-fra.com

single-type.php ne fonctionne pas, livraison 404

J'ai créé un type d'article personnalisé et j'ai ajouté avec succès quelques entrées. Je peux appeler ces entrées avec query_posts() pour qu'il apparaisse en première page, mais the_permalink() sur chacune d'elles m'envoie simplement à une "page introuvable" 404.

Est-ce que je manque quelque chose? Je cours actuellement sur http://localhost, donc les résultats de the_permalink() de la boucle de type de message personnalisé de la page d'accueil envoient l'utilisateur à http://localhost/PU/PU2010/website/cartoons/einstein-on-california.

functions.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' );

Selon cela, je devrais pouvoir créer simplement single-cartoon.php, correct?

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(); ?>

loops-cartoons.php (boucle de 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(); ?>
1
Sampson

Êtes-vous allé dans Admin -> Paramètres -> Permaliens après avoir configuré le type de message? La structure de permalien n'a pas été ajoutée jusqu'à ce que vous l'ayez fait. Cela pourrait être la cause de votre problème.

La page de permaliens 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.

4
John P Bloch

Après avoir enregistré les types de publication personnalisés, vous devez reconstruire des permaliens. Vous pouvez le faire manuellement en accédant à Admin -> Paramètres -> Liens permanents (comme l'a commenté John), vous pouvez reconstruire des liens permanents dans votre code en appelant $wp_rewrite->flush_rules(); ou, si vous êtes paresseux, vous pouvez utiliser le Pergélisol (plugin Wordpress) .

9
hakre

J'ai eu le même problème - et chaque fois que j'ai ajouté une nouvelle page, il a fallu réinitialiser la structure des permaliens. Ajoutant ceci:

flush_rewrite_rules();

dans votre fonction createCartoonPostType () immédiatement après que la partie register_post_type a résolu le problème et signifie que vous n’avez pas besoin d’utiliser les liens permanents de réinitialisation permanente.

0
Andrew Parker