web-dev-qa-db-fra.com

Utiliser un slug portfolio_category dans une URL wordpress

Je ne vais pas mentir - je ne sais pas php mais j'aime fouiller et essayer de trouver des moyens de personnaliser les thèmes pour qu'ils se comportent comme je le souhaite. Toute aide serait très appréciée.

Ce que j'essaie de faire:

J'utilise une section dans un thème wordpress qui vous permet de publier des portefeuilles.

L'URL de n'importe quelle page de portefeuille serait:

mysite.com/portfolio/example-portfolio

Lors de la création d'un nouveau portefeuille, vous avez la possibilité d'attribuer une catégorie de portefeuille, de la même manière que lorsque vous créez une nouvelle publication.

J'aimerais pouvoir afficher l'URL de mon portefeuille comme suit:

mysite.com/portfolio-category/example-portfolio

J'ai mis en évidence un domaine de code que je soupçonne d'être modifiable pour permettre cela, mais c'est là que se termine malheureusement mon aventure :(

Voici le code:

function mysite_post_types() {
    register_post_type('portfolio', array(
        'labels' => array(
            'name' => _x('Portfolios', 'post type general name', MYSITE_ADMIN_TEXTDOMAIN ),
            'singular_name' => _x('Portfolio', 'post type singular name', MYSITE_ADMIN_TEXTDOMAIN ),
            'add_new' => _x('Add New', 'portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
            'add_new_item' => __('Add New Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
            'edit_item' => __('Edit Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
            'new_item' => __('New Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
            'view_item' => __('View Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
            'search_items' => __('Search Portfolios', MYSITE_ADMIN_TEXTDOMAIN ),
            'not_found' =>  __('No portfolios found', MYSITE_ADMIN_TEXTDOMAIN ),
            'not_found_in_trash' => __('No portfolios found in Trash', MYSITE_ADMIN_TEXTDOMAIN ), 
            'parent_item_colon' => ''
        ),
        'singular_label' => __('Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
        'public' => true,
        'exclude_from_search' => false,
        'show_ui' => true,
        'capability_type' => 'post',
        'hierarchical' => true,
        'rewrite' => array( 'with_front' => false, 'slug' => 'products' ),

J'ai travaillé sur la façon de changer 'mysite.com/portfolio / exemple-portfolio' en 'mysite.com/ produits / exemple-portfolio' (à la dernière ligne de l'exemple), mais je ne ne veux pas en rester là!

Puisque vous pouvez classer les portefeuilles, je voudrais en tirer parti dans les URL générées.

Ceci est sûrement possible sans trop de travail, et je serais très reconnaissant si quelqu'un avec plus de connaissances en php que moi (ce qui ne prend pas beaucoup!) Pouvait me laisser compter sur eux pour trouver une solution.

merci

1
ste.b

ajouter

'rewrite' => array('slug' => 'portfolio-categories'),

mais assurez-vous de l'enlever (vous ne savez pas pourquoi c'est là, il essaie de cacher le slug et essaie de le renommer en "produits" en même temps?):

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

Alors ça ressemble à ça:

function mysite_post_types() {
register_post_type('portfolio', array(
    'labels' => array(
        'name' => _x('Portfolios', 'post type general name', MYSITE_ADMIN_TEXTDOMAIN ),
        'singular_name' => _x('Portfolio', 'post type singular name', MYSITE_ADMIN_TEXTDOMAIN ),
        'add_new' => _x('Add New', 'portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
        'add_new_item' => __('Add New Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
        'edit_item' => __('Edit Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
        'new_item' => __('New Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
        'view_item' => __('View Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
        'search_items' => __('Search Portfolios', MYSITE_ADMIN_TEXTDOMAIN ),
        'not_found' =>  __('No portfolios found', MYSITE_ADMIN_TEXTDOMAIN ),
        'not_found_in_trash' => __('No portfolios found in Trash', MYSITE_ADMIN_TEXTDOMAIN ), 
        'parent_item_colon' => ''
    ),
    'singular_label' => __('Portfolio', MYSITE_ADMIN_TEXTDOMAIN ),
    'public' => true,
    'exclude_from_search' => false,
    'show_ui' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'rewrite' => array('slug' => 'portfolio-categories')
     )
    );

assurez-vous simplement que register_post_type se ferme correctement, le code que vous avez posté se termine au milieu du tableau. Je l'ai fermé pour vous mais je ne suis pas sûr si vous avez oublié quelque chose. Quelques exemples ici: http://codex.wordpress.org/Function_Reference/register_post_type

3
Josh

Ne pourriez-vous pas simplement faire cela avec Permalink?

http://codex.wordpress.org/Using_Permalinks

0
Tom Kiddle