Cela me rend fou et je suis sûr que c'est simple, mais rien de ce que je recherche ne propose une structure simple (tout est très complexe).
J'ai un type de message personnalisé product_listing
et une taxonomie personnalisée de product_cat
(qui est hiérarchique et devrait avoir des catégories similaires).
Je veux simplement que mes URL ressemblent à ceci:
mysite.com/products/category1/product-name1
mysite.com/products/category2/product-name2
Mais pour ma vie, peu importe ce que je fais, je reçois le problème redouté de 404. Les pages fonctionnent correctement et les messages fonctionnent correctement, mais mes messages personnalisés ne fonctionnent pas correctement. Ils apparaissent comme:
mysite.com/products/product-name1
mysite.com/products/product-name2
Ce qui fonctionne réellement ! C'est juste que je veux voir ma taxonomie personnalisée là-bas et que je veux pouvoir accéder au taxonomy.php
modèle que j'ai configuré en allant dans:
mysite.com/products/category1/
mysite.com/products/category2/
Aucune de mes limaces n'est la même, et je ne veux pas qu'elles soient. Voici la partie type et taxonomie de mon functions.php
fichier:
///// CUSTOM POST TYPES /////
// register the new post type
register_post_type( 'product_listing', array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' ),
'add_new' => __( 'Add New' ),
'add_new_item' => __( 'Create New Product' ),
'edit' => __( 'Edit' ),
'edit_item' => __( 'Edit Product' ),
'new_item' => __( 'New Product' ),
'view' => __( 'View Products' ),
'view_item' => __( 'View Product' ),
'search_items' => __( 'Search Products' ),
'not_found' => __( 'No products found' ),
'not_found_in_trash' => __( 'No products found in trash' ),
'parent' => __( 'Parent Product' ),
),
'description' => __( 'This is where you can create new products on your site.' ),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'publicly_queryable' => true,
'exclude_from_search' => false,
'menu_position' => 2,
'menu_icon' => get_stylesheet_directory_uri() . '/images/tag_orange.png',
'hierarchical' => true,
'_builtin' => false, // It's a custom post type, not built in!
'rewrite' => array( 'slug' => 'products', 'with_front' => true ),
'query_var' => true,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions' ),
) );
//hook into the init action and call create_book_taxonomies when it fires
add_action( 'init', 'create_product_taxonomies', 0 );
//add_action('admin_init', 'flush_rewrite_rules');
//create two taxonomies, genres and writers for the post type "book"
function create_product_taxonomies() {
// Add new taxonomy, make it hierarchical (like categories)
$labels = array(
'name' => _x( 'Categories', 'taxonomy general name' ),
'singular_name' => _x( 'Category', 'taxonomy singular name' ),
'search_items' => __( 'Search Categories' ),
'all_items' => __( 'All Categories' ),
'parent_item' => __( 'Parent Categories' ),
'parent_item_colon' => __( 'Parent Categories:' ),
'edit_item' => __( 'Edit Category' ),
'update_item' => __( 'Update Category' ),
'add_new_item' => __( 'Add New Category' ),
'new_item_name' => __( 'New Category Name' ),
'menu_name' => __( 'Category' ),
);
register_taxonomy( 'product_cat', array( 'product_listing' ), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
//'rewrite' => true,
'rewrite' => array( 'slug' => '%category%', 'with_front' => true ),
) );
// Add new taxonomy, NOT hierarchical (like tags)
$labels = array(
'name' => _x( 'Scents', 'taxonomy general name' ),
'singular_name' => _x( 'Scent', 'taxonomy singular name' ),
'search_items' => __( 'Search Scents' ),
'popular_items' => __( 'Popular Scents' ),
'all_items' => __( 'All Scents' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Scent' ),
'update_item' => __( 'Update Scent' ),
'add_new_item' => __( 'Add New Scent' ),
'new_item_name' => __( 'New Scent Name' ),
'separate_items_with_commas' => __( 'Separate scents with commas' ),
'add_or_remove_items' => __( 'Add or remove scents' ),
'choose_from_most_used' => __( 'Choose from the most used scents' ),
'menu_name' => __( 'Scents' ),
);
register_taxonomy( 'scent', 'product_listing', array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'query_var' => true,
//'rewrite' => array( 'slug' => 'scents' ),
) );
}
J'ai aussi une autre taxonomie personnalisée de scents
ce que j'aimerais idéalement avoir une sorte d'URL conviviale, mais je suis plus ouvert à ce sujet. J'aimerais peut-être accéder à une liste de tous les parfums en allant sur mysite.com/products/scents
mais ils ne doivent pas nécessairement être spécifiques à une catégorie.
Quelqu'un peut-il m'aider?
la source
product/cat-name/product-name
? (remarquez la singularité) Le problème est que la règle de réécriture de la pagination de la taxonomie n'est pas déclenchée, car elle est bloquée par une règle antérieure pour un seul produit!products/
) et singuliers objets (product/
). Et non, je garderais le 'répertoire avant' - cela aide à garder une distinction claire entre les articles et les pages, sans quoi vous pourriez vous retrouver avec des problèmes de performances (par exemple des règles de réécriture verbeuses).Merci @TheDeadMechanic, votre réponse m'a aidé, mais seulement partiellement. Je voulais faire la même chose que @RodeoRamsey avait demandé, mais avec des catégories imbriquées (c.-à-d.:)
mysite.com/products/category1/child-category-1/grandchild-category-1/product-name
Et votre solution n'a pas fonctionné pour cela.J'ai finalement trouvé une solution étendue à ma question qui fonctionne. Par conséquent, si quelqu'un d'autre a besoin de catégories / sous-catégories imbriquées, vous pouvez voir une solution détaillée pour ma propre question. J'espère que cela aide les autres et merci pour les étapes initiales.
la source
Je ne suis pas sûr que wp prenne en charge cette structure, mais vous pouvez très facilement créer vos propres règles de réécriture.
Découvrez une réponse précédente ici Auteur url rewrite .
Vous pouvez changer de ligne
à quelque chose comme
la partie product_cat ici peut être superflue - je ne suis pas sûr que ce soit nécessaire.
Vous pouvez ajouter toutes les règles de votre choix et elles auront la priorité sur celles qui sont intégrées.
la source
Oui, cela me rendait folle avant de définir le lien permanent pour le type de message personnalisé. J'ai trouvé un plugin pour gérer le type de message personnalisé. C'est très facile à utiliser. http://wordpress.org/extend/plugins/custom-post-permalinks/ WP devrait l'ajouter comme caractéristique principale! Leo
la source
En fait, c'est assez facile. Vous avez juste besoin d'une ligne. Voici mon code
Et appliqué à la taxonomie générée pour mes avis CPT de GenerateWP.com. J'utilise ceci sur mon propre site WordPress, https://www.wpstarters.com
Tout ce dont vous avez besoin alors mettez le 'rewrite' => tableau ('hierarchical' => true),
la source