Esto me está volviendo loco y estoy seguro de que es simple, pero nada de lo que busco tiene una estructura simple (todo es muy complejo).
Tengo un tipo de publicación personalizado product_listing
y una taxonomía personalizada de product_cat
(que es jerárquica y debería tener categorías similares).
Simplemente quiero que mis URL se vean así:
mysite.com/products/category1/product-name1
mysite.com/products/category2/product-name2
Pero para mi vida, no importa lo que haga, me sale el temido problema 404. Las páginas funcionan bien y las publicaciones funcionan bien, pero mis publicaciones personalizadas no funcionan correctamente. Se muestran como:
mysite.com/products/product-name1
mysite.com/products/product-name2
Que realmente funciona ! Es solo que quiero ver mi taxonomía personalizada allí y quiero poder acceder a la taxonomy.php
plantilla que configuré yendo a:
mysite.com/products/category1/
mysite.com/products/category2/
Ninguna de mis babosas es igual, ni quiero que lo sean. Aquí está el tipo de publicación y la parte de taxonomía de mi functions.php
archivo:
///// 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' ),
) );
}
También tengo otra taxonomía personalizada de la scents
que idealmente me gustaría tener algún tipo de URL amigable, pero estoy más abierto a esto. Tal vez me gustaría acceder a una lista de todos los olores yendo a, mysite.com/products/scents
pero no tienen que ser específicos de la categoría.
Alguien puede ayudarme?
fuente
product/cat-name/product-name
? (tenga en cuenta la singularidad) El problema es que la regla de reescritura para la paginación de taxonomía no se activa, ¡porque queda atrapada por una regla anterior para productos individuales!products/
) y elementos singulares (product/
). Y no, mantendría el 'directorio frontal'; ayuda a mantener una distinción clara de publicaciones y páginas, además de lo contrario, podría terminar con problemas de rendimiento (es decir, reglas detalladas de reescritura).Gracias @TheDeadMechanic, tu respuesta me ayudó, pero solo parcialmente. Quería hacer lo mismo que @RodeoRamsey solicitó, pero con categorías anidadas (es decir:)
mysite.com/products/category1/child-category-1/grandchild-category-1/product-name
y su solución no funcionó para eso.Finalmente se me ocurrió una solución extendida a mi pregunta que funciona, así que si alguien más necesita categorías / subcategorías anidadas, puede ver una solución detallada en mi propia pregunta. Espero que ayude a otros, y gracias por los pasos iniciales.
fuente
No estoy seguro de que wp admita esa estructura de fábrica, pero puede crear fácilmente sus propias reglas de reescritura para hacerlo.
Echa un vistazo a una respuesta anterior aquí Autor url reescribir .
Puedes cambiar la linea
a algo como
la parte product_cat aquí puede ser superflua; no estoy seguro de si es necesaria.
Puede agregar las reglas que desee y tendrán prioridad sobre las incorporadas.
fuente
Sí, me estaba volviendo loco antes de configurar el enlace permanente para el tipo de publicación personalizada. Encontré un complemento para manejar el tipo de publicación personalizada. Es muy fácil de usar. http://wordpress.org/extend/plugins/custom-post-permalinks/ ¡ WP debería agregar esto como una característica central! León
fuente
En realidad, es bastante fácil. Solo necesitas una línea. Aquí está mi código
Y se aplicó a la taxonomía generada para mis Comentarios CPT de GenerateWP.com. Estoy usando esto en mi propio sitio de WordPress, https://www.wpstarters.com
Todo lo que necesitas, así que pon 'rewrite' => array ('jerárquico' => verdadero),
fuente