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_listingy 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.phpplantilla 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.phparchivo:
///// 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 scentsque 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/scentspero 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-namey 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
función create_product_taxonomies () { // Agregar nueva taxonomía, hacerla jerárquica (como categorías) $ etiquetas = matriz ( 'name' => _x ('Categorías', 'nombre general de taxonomía'), 'singular_name' => _x ('Categoría', 'taxonomía nombre singular'), 'search_items' => __ ('Categorías de búsqueda'), 'all_items' => __ ('Todas las categorías'), 'parent_item' => __ ('Categorías padre'), 'parent_item_colon' => __ ('Categorías padre:'), 'edit_item' => __ ('Editar categoría'), 'update_item' => __ ('Actualizar categoría'), 'add_new_item' => __ ('Agregar nueva categoría'), 'new_item_name' => __ ('Nuevo nombre de categoría'), 'menu_name' => __ ('Categoría'), ); register_taxonomy ('product_cat', array ('product_listing'), array ( 'jerárquico' => verdadero, 'labels' => $ etiquetas, 'show_ui' => verdadero, 'query_var' => verdadero, 'rewrite' => array ('jerárquico' => verdadero), ));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
función reviews_category_taxonomy () { $ etiquetas = matriz ( 'name' => _x ('Categorías de comentarios', 'Nombre general de taxonomía', 'reviews_category'), 'singular_name' => _x ('Categoría de comentarios', 'Nombre singular de taxonomía', 'reviews_category'), 'menu_name' => __ ('Categoría de comentarios', 'reviews_category'), 'all_items' => __ ('Todas las categorías de revisión', 'reviews_category'), 'parent_item' => __ ('Categoría de revisión principal', 'reviews_category'), 'parent_item_colon' => __ ('Categoría de revisión principal:', 'reviews_category'), 'new_item_name' => __ ('Nuevo nombre de categoría de revisión', 'reviews_category'), 'add_new_item' => __ ('Agregar nueva categoría de revisión', 'reviews_category'), 'edit_item' => __ ('Editar categoría de revisión', 'reviews_category'), 'update_item' => __ ('Actualizar categoría de revisión', 'reviews_category'), 'view_item' => __ ('Ver categoría de revisión', 'reviews_category'), 'separate_items_with_commas' => __ ('Separe los elementos con comas', 'reviews_category'), 'add_or_remove_items' => __ ('Agregar o eliminar elementos', 'reviews_category'), 'choose_from_most_used' => __ ('Elija entre los más utilizados', 'reviews_category'), 'popular_items' => __ ('Categorías de revisión populares', 'reviews_category'), 'search_items' => __ ('Buscar elementos', 'reviews_category'), 'not_found' => __ ('No encontrado', 'reviews_category'), 'no_terms' => __ ('Categorías sin revisión', 'reviews_category'), 'items_list' => __ ('Revisar lista de categorías', 'reviews_category'), 'items_list_navigation' => __ ('Navegación de lista de categorías de revisión', 'reviews_category'), ); $ args = array ( 'labels' => $ etiquetas, 'jerárquico' => verdadero, 'public' => verdadero, 'show_ui' => verdadero, 'show_admin_column' => verdadero, 'show_in_nav_menus' => verdadero, 'show_tagcloud' => falso, 'show_in_rest' => verdadero, 'rewrite' => array ('jerárquico' => verdadero), ); register_taxonomy ('reviews_category', array ('wps_reviews'), $ args); } add_action ('init', 'reviews_category_taxonomy', 0);Todo lo que necesitas, así que pon 'rewrite' => array ('jerárquico' => verdadero),
fuente