web-dev-qa-db-fra.com

Comment supprimer/blog/préfixe pour les types de publication personnalisés dans les permaliens?

J'ai un client qui avait un site Web statique et un blog sous WordPress dans le sous-répertoire /blog. Il a maintenant décidé de tout transférer dans WordPress afin de pouvoir également créer et modifier facilement des pages. Cependant, parce que le site Web reçoit beaucoup de trafic et qu'il a déjà des goûts, des tweets et +1 dans chaque message de blog, il souhaite que son blog soit sous le website.com/blog. Je pensais que c'était aussi simple que de parcourir les permaliens et d'ajouter /blog/%postname%/ dans la structure de permalink.

Le problème, c’est que j’ai créé quelques types de messages personnalisés pour répondre aux besoins de son contenu et que le contenu du type de messages personnalisé se trouve maintenant dans le répertoire virtuel du blog.

Comment puis-je spécifier que seules les publications de blog et les catégories de blog doivent se trouver dans le répertoire virtuel/blog et que tout le reste peut utiliser la structure de lien permanent de /% postname% /?.

Ceci est mon type de message personnalisé

register_post_type( 'vm_products',
    array(
        'labels' => array(
            'name' => __( 'Products' ),
            'singular_name' => __( 'New product' ), //in the horizontal bar when you are logged in.
            'add_new' => __('Add new product'),
            'add_new_item' => __('New product'),
            'edit_item' => __('Edit product'),
            'new_item' => __('New product'),
            'view_item' => __('Show all products'),
            'search_items' => __('Search product'),
            'not_found' =>  __('No products found'),
            'not_found_in_trash' => __('No products found in trash'), 
            'parent_item_colon' => '',
            'menu_name' => 'Products'
        ),
    'public' => true,
    'has_archive' => true,
    'show_in_menu' => true, 
    'show_ui' => true,
    'supports' => array( 'title', 'custom-fields', 'editor', 'thumbnail'),
    'rewrite' => array('slug' => 'product'),
    'taxonomies' => array('vm_product_cats')
    )
);
4
nickast

Étendez l’argument 'rewrite' pour supprimer la première partie de l’URL:

        'rewrite' => array(
            'with_front' => false,
            'slug'       => 'product'
        )

Mais utiliser uniquement %postname% pour différents types de publication est vraiment délicat et sujet aux erreurs. L'éviter.

11
fuxia