Isso está me deixando maluco e tenho certeza de que é simples, mas nada que eu busque cria uma estrutura simples (tudo é muito complexo).
Eu tenho um tipo de postagem personalizado product_listing
e uma taxonomia personalizada de product_cat
(que é hierárquica e deve ter categorias semelhantes).
Eu simplesmente quero que meus URLs sejam assim:
mysite.com/products/category1/product-name1
mysite.com/products/category2/product-name2
Mas para a minha vida, não importa o que eu faça, estou recebendo o temido problema 404. As páginas funcionam bem e as postagens funcionam bem, mas minhas postagens personalizadas não funcionam corretamente. Eles estão aparecendo como:
mysite.com/products/product-name1
mysite.com/products/product-name2
O que realmente funciona ! É só que eu quero ver minha taxonomia personalizada lá, além de poder acessar o taxonomy.php
modelo que eu configurei acessando:
mysite.com/products/category1/
mysite.com/products/category2/
Nenhuma das minhas lesmas são iguais, nem quero que sejam. Aqui está o tipo de post e a parte taxonômica do meu functions.php
arquivo:
///// 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' ),
) );
}
Eu também tenho outra taxonomia personalizada scents
que, idealmente, gostaria de ter algum tipo de URL amigável, mas sou mais aberto a isso. Talvez eu mysite.com/products/scents
queira acessar uma lista de todos os aromas acessando, mas eles não precisam ser específicos de uma categoria.
Alguém pode me ajudar?
fonte
product/cat-name/product-name
? (observe a singularidade) O problema é que a regra de reescrita para a paginação da taxonomia não é acionada, porque está sendo pega por uma regra anterior para produtos únicos!products/
) e itens singulares (product/
). E não, eu manteria o 'diretório frontal' - ele ajuda a manter uma distinção clara de postagens e páginas, além disso, você pode acabar com problemas de desempenho (por exemplo, regras detalhadas de reescrita).Obrigado @TheDeadMechanic, sua resposta me ajudou, mas apenas parcialmente. Eu queria fazer a mesma coisa que o @RodeoRamsey pediu, mas com categorias aninhadas (por exemplo:)
mysite.com/products/category1/child-category-1/grandchild-category-1/product-name
e sua solução não funcionou para isso.Finalmente, eu vim com uma solução estendida para minha pergunta que funciona, portanto, se alguém mais precisar de categorias / subcategorias aninhadas, poderá ver uma solução detalhada em minha própria pergunta. Espero que ajude os outros e obrigado pelas etapas iniciais.
fonte
Não tenho certeza se o wp suporta essa estrutura imediatamente - mas você pode facilmente criar suas próprias regras de reescrita para fazer isso.
Confira uma resposta anterior aqui URL do autor reescrita .
Você pode mudar a linha
para algo como
a parte product_cat aqui pode ser supérflua - não tenho certeza se é necessário.
Você pode adicionar as regras que desejar e elas terão prioridade sobre as que estão embutidas.
fonte
Sim, estava me deixando louco antes de definir o link permanente para o tipo de postagem personalizada. Encontrei um plugin para lidar com o tipo de postagem personalizada. É muito fácil de usar. http://wordpress.org/extend/plugins/custom-post-permalinks/ O WP deve adicionar isso como um recurso principal! Leo
fonte
Na verdade, é bem fácil. Você só precisa de uma linha. Aqui está o meu código
E aplicado à taxonomia gerada para minhas avaliações CPT de GenerateWP.com. Estou usando isso no meu próprio site WordPress, https://www.wpstarters.com
Tudo o que você precisa é colocar a matriz 'reescrever' => ('hierárquica' => true),
fonte