web-dev-qa-db-fra.com

Pourquoi mes publications personnalisées ne sont pas affichées (erreur 404/page non trouvée)

Je viens d'installer une nouvelle installation de wp. J'ai créé un nouveau thème pour enfants basé sur le thème TwentyTwelve. Dans le thème enfant functions.php, j'ai créé un nouveau message personnalisé appelé "actualités". J'ai ajouté deux messages dans les "nouvelles" et lorsque je les visualise, une erreur "page non trouvée" s'affiche. Voir capture d'écran: http://pasteboard.co/dtIOK6g.jpg

Je m'attends à ce que les articles soient affichés, mais je reçois une page 404. Pourquoi.

Update(pour que ma question soit claire): Depuis l'installation, j'ai effectué très peu de travail, mis à part les éléments suivants:

  • Ajout d'un nouveau thème enfant (de Twenty Twelve)
  • J'ai appliqué le nouveau thème enfant
  • J'ai créé un nouveau message personnalisé en mettant à jour le fichier functions.php dans le thème de l'enfant et en ajoutant ce code ici ( http://Pastebin.com/DKny8QH1 )
  • Dans WP admin, j'ai créé 2 nouvelles publications sous news (nouvelle publication personnalisée créée ci-dessus).
  • si j'essaie d'accéder au message, j'obtiens 404 (comme illustré dans la capture d'écran ci-dessus). Cependant, je peux accéder aux messages créés normalement.

Merci

RÉSOLU: C'est vraiment bizarre mais je l'ai résolu. Il semble que j’ai eu besoin de resélectionner l’option "Nom du post" pour mes paramètres de permaliens même s’il était déjà sélectionné. La sélection de cette option a de nouveau résolu mon problème. Désolé de toute confusion.

  • Je suis allé dans les paramètres> permalien
1
Abs

RÉSOLU: C'est vraiment bizarre mais je l'ai résolu. Il semble que j’ai eu besoin de resélectionner l’option "Nom du post" pour mes paramètres de permaliens même s’il était déjà sélectionné. La sélection de cette option a de nouveau résolu mon problème. Désolé de toute confusion.

Je suis allé dans les paramètres> permalien

2
Abs

En fait, c'est un problème commun.

Lorsque vous ajoutez un type de publication personnalisé, vous enregistrez également une nouvelle règle de réécriture avec WordPress. Cependant vous devez effacer vos règles de réécriture après avoir enregistré des éléments pour que WordPress les reconnaisse.

Avec un plugin, ceci est corrigé en accrochant votre enregistrement CPT à la fois init (donc utilisable) et au hook d'activation du plugin. Ensuite, à l’intérieur du crochet d’activation du plug-in, vous appelez manuellement flush_rewrite_rules() pour réinitialiser les éléments.

Comme il n’existe pas de configuration analogue d’activation/désactivation de thème, vous pouvez utiliser les options pour définir le moment où le thème a été chargé. Par exemple:

function my_theme_register_cpt() {
    $args = array(
        // ... your initialization stuff
    );

    register_post_type( 'news', $news );
}
add_action( 'init', 'my_theme_register_cpt' );

function my_theme_deactivate() {
    delete_option( 'my_theme_active' );
}
add_action( 'switch_theme', 'my_theme_deactivation' );

$is_active = get_option( 'my_theme_active' );
if ( 'set' !== $check ) {
    my_theme_register_cpt();
    flush_rewrite_rules();

    add_option( 'my_theme_active', 'set', '', 'no' );
}

En un mot. Ce code va:

  • Enregistrez votre CPT sur init comme d'habitude.
  • Lorsque vous changez de thème, cela efface une valeur stockée indiquant que votre thème est actif.
  • Si votre thème devient actif et que cette valeur stockée n'est pas définie, le thème activera votre code d'enregistrement CPT (à nouveau) et effacera immédiatement les règles de réécriture. Ensuite, il définit la valeur stockée pour qu'il ne déclenche pas flush_rewrite_rules() plusieurs fois.
2
EAMann