web-dev-qa-db-fra.com

Quand un lien n'existe pas, comment dire à Wordpress quoi faire? (Page d'erreur 404)

Si vous cliquez sur un lien qui n'existe pas dans mon site principal , par exemple , ce lien , je prévois que WordPress utilise le fichier index.php par défaut qui contient cette boucle:

<div class="main col <?php post_class(); ?>">
        <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
                <?php $post_id = get_the_ID(); ?>
        <?php get_template_part('content',get_post_format()); ?>
    </div>
    <div class="main col">
        <?php comments_template(); ?>
    </div>
        <?php endwhile; ?>
        <?php else: ?>
    <div class="main col">
        <?php get_template_part('content', 'none'); ?>
    </div>
        <?php endif; ?>

Je pense donc que WordPress chargera le fichier content-none.php, mais ce n’est pas le cas.

Qu'est-ce que ça veut dire? Est-ce que je manque toute logique nécessaire pour faire quelque chose qui le fait quand il n'y a pas de lien/page réel?

1
The WP Novice

La condition que vous utilisez pour générer get_template_part('content', 'none'); n'est déclenchée que s'il n'y a pas de publication dans la boucle principale, par exemple, lorsqu'une catégorie ne contient aucune publication:

if (have_posts()){
    while(have_posts()) {
        the_post();
        // If the category has a post and we are on a category page, then show the posts
        get_template_part('content', 'archive');
    }
} else {
    //If the category has no posts, display a message that no post exists
    get_template_part('content', 'none');
}

Mais cela ne se produit que lorsque vous visitez www.example.com/category/some-cat/, et le /some-cat/ est en réalité un slug de catégorie existant. Si vous essayez d'accéder à une page qui n'existe pas, le modèle 404.php sera utilisé à la place.

2
Jack Johansson