WordPress : WordPress ne charge pas page.php, renvoie 404.php

Publié par Jean-Michel le

ACTUALISÉ!

Je développe un thème pour WordPress en suivant quelques tutoriels. La page principale fonctionne bien, chargeant la publication d’un type de publication personnalisé, et la page pour voir le contenu du cpt suit également la nomenclature WordPress : single-{name-cpt}.php.

Le problème est lorsque je crée une page normale. Lors de la saisie de l’URL de la page, la page d’erreur apparaît 404.php.

J’ai actualisé la structure des liens et vérifié que le .htaccess est correct.

Que pourrait-il se passer pour qu’il ne charge pas page.php ?

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Structure des liens personnalisés : /blog/%postname%/

ACTUALISÉ!

Code de fonction pour créer cpt :

add_action( 'init', 'create_post_type' );
function create_post_type() {
  register_post_type( 'videos_porno',
    array(
      'labels' => array(
        'name' => __( 'Videos porno' ),
        'singular_name' => __( 'Video porno' )
      ),
      'public' => true,
      'has_archive' => false, //true
      'hierarchical' => false,
      'rewrite' => array('slug' => '', 'with_front' => false),
      'register_meta_box_cb' => 'add_metaboxes_video_porno',
      'supports' => array( 'title', 'editor', 'thumbnail' )
    )
  );


  $args= array(
    'label' => 'Servidores',
    'hierarchical' => false,
    'rewrite' => false,
  );
  register_taxonomy( 'servidores', 'videos_porno', $args );
}

function my_rewrite_flush() {
    create_post_type();
    flush_rewrite_rules();
}
add_action( 'after_switch_theme', 'my_rewrite_flush' );

Avant d’implémenter le code que le cpt ajoute, tout fonctionne correctement.

Avec la structure de liens /blog/%postname%, est-il possible que les publications et pages cpt partagent le répertoire « / » pour les urls ?

Solution n°1 trouvée

Pour déterminer s’il y a un problème avec les paramètres de votre serveur ou avec votre thème, vous pouvez écrire un thème très simple qui affichera des résultats différents pour le type de publication personnalisé.

Je viens d’essayer avec le thème suivant :

style.css

/**
 * Theme Name: WPSE
 */

fonctions.php

<?php
function wpse_init() {
  register_post_type( 'wpse', array(
    'labels' => array(
      'name' => 'wpse',
    ),
    'public' => true,
  ) );
}
add_action( 'init', 'wpse_init' );

index.php

<?php
echo 'index';

single-wpse.php

<?php
echo 'single-wpse';

J’ai ensuite créé un nouveau type de message personnalisé wpse avec un slug de « test ». Lorsque j’ai navigué dans un navigateur /wpse/test, j’ai vu une page qui disait ‘single-wpse’ comme prévu.

Remarque : Après avoir changé de thème, j’ai dû actualiser les règles de réécriture ou j’ai vu un 404 sur les types de publication personnalisés.

Si vous faites cela et que vous voyez toujours un 404, il s’agit d’un problème de configuration du serveur. Si vous voyez « single-wpse », c’est qu’il y a un problème avec votre thème. Je suppose que vous utilisez probablement l’étiquette de type de publication personnalisée au lieu du slug de type de publication personnalisé.

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 *