J'utilise WAMP avec la dernière version de WordPress installée. J'ai un type de message personnalisé créé à l'aide de ce qui suit ...
function register_fruit() {
register_post_type('fruit', array(
'labels' => array(
'name' => __( 'Fruit' ),
),
'public' => true,
'has_archive' => true,
'capability_type' => 'post',
'rewrite' => array("slug" => "/fruit", "with_front" => false),
'supports' => array( 'title', 'editor', 'thumbnail'),
'taxonomies' => array('category', 'post_tag') // this is IMPORTANT
));
}
add_action('init', 'register_fruit', 0 );
Cela fonctionne bien lors de l'affichage d'éléments individuels, par exemple.
www.mydomain.com/fruit/Apple
www.mydomain.com/fruit/orange
www.mydomain.com/fruit/pear
Mais si j'essaie de voir les pages d'archives telles que ...
www.mydomain.com/fruit
Je reçois un 404, je ne vois pas où est le problème, quelqu'un peut-il aider?
Avez-vous essayé de rafraîchir des permaliens? Paramètres -> Permaliens (vous n'avez rien à changer), puis réessayez?
Supprimez la barre oblique dans votre argument de réécriture, ceci:
'rewrite' => array("slug" => "/fruit", "with_front" => false),
devrait être:
'rewrite' => array("slug" => "fruit", "with_front" => false),
et vos archives fonctionneront correctement.
J'ai le même problème en utilisant:
function cp_init_types() {
register_post_type( 'nursing-home',
array(
'labels' => array(
'name' => __( 'Nursing Homes' ),
'singular_name' => __( 'Nursing Home' )
),
'public' => true,
'has_archive' => true,
/*'rewrite' => array( 'slug' => 'nursing-homes', 'with_front' => true ),
'supports' => array( 'title', 'editor', 'custom-fields', 'thumbnail' ),
'publicly_queryable' => true,
'exclude_from_search'=> false,
'taxonomies' => array('category','post_tag'),*/
)
);
/*register_taxonomy('location','nursing-home',[
'labels' => [
'name' => __('Locations'),
'singular_name' => __('Location')
],
'public' => true
]);*/
}
function add_my_post_types_to_query( $query ) {
if ( is_post_type_archive( "nursing-home" ) && $query->is_main_query() ) {
$query->set('type',"nursing-home");
$test = $query->get('type');
var_dump($test);
}
return $query;
}
add_action( 'pre_get_posts', 'add_my_post_types_to_query' );
add_action("init", "cp_init_types");
J'ai ajouté l'action "pre_get_posts" car j'avais le même problème que fightstar.