web-dev-qa-db-fra.com

Custom Post Type archive donnant 404

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?

2
fightstarr20

Avez-vous essayé de rafraîchir des permaliens? Paramètres -> Permaliens (vous n'avez rien à changer), puis réessayez?

3
GhostToast

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.

2
Milo

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.

0
zquintana