web-dev-qa-db-fra.com

WordPress ne charge pas page.php, retourne 404.php

MISE À JOUR!

Je développe un thème pour WordPress en suivant des tutoriels. La page principale fonctionne bien, en chargeant la publication d’un type de publication personnalisé et la page permettant de voir le contenu de la cpt suivant é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 s'affiche en 404.php.

J'ai actualisé la structure de lien et vérifié que le .htaccess est correct.

Que pourrait-il se passer pour que cela 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 de liens personnalisée:/blog /% postname% /

MISE À JOUR!

Code de fonction pour créer un 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 ajouté par le cpt, tout fonctionne correctement.

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

1
Mike

Pour déterminer s’il ya 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 cela avec le thème suivant:

style.css

/**
 * Theme Name: WPSE
 */

functions.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 pour /wpse/test, j'ai vu une page qui disait "single-wpse" comme prévu.

Remarque: après avoir changé de thème, j'avais besoin d'actualiser les règles de réécriture ou j'ai vu un 404 dans les types de publication personnalisés.

Si vous faites cela et que vous voyez toujours un 404, alors c'est un problème de configuration du serveur. Si vous voyez 'single-wpse', il y a un problème avec votre thème. J'imagine que vous utilisez probablement l'étiquette de type de message personnalisé au lieu du slug de type de message personnalisé.

1
Nathan Johnson