Như cái danh-muc của Woo, cái san-pham này chắc nhiều bạn cũng muốn xóa luôn (trong đó có cả mình), vậy thì đây là cách nhé:
Chúng ta đi thẳng vào cách xóa bỏ link /san-pham/ luôn nhé. Đầu tiên, bạn mở file functions.php trong theme đang sử dụng hoặc nếu bạn dùng child theme thì có thể chèn vào file functions.php trong child-theme đều được.
Sau đó chèn vào file functions.php đoạn code sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/** * Register a custom post type */ $args = array( 'description' => 'Chi tiết sản phẩm', 'label' => __('Sản phẩm'), 'public' => true, 'rewrite' => array( 'slug' => '/'), ); register_post_type( 'product' , $args ); /** * Remove the slug from published post permalinks. */ function custom_remove_cpt_slug( $post_link, $post, $leavename ) { if ( 'product' != $post->post_type || 'publish' != $post->post_status ) { return $post_link; } $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); return $post_link; } add_filter( 'post_type_link', 'custom_remove_cpt_slug', 10, 3 ); /** * Some hackery to have WordPress match postname to any of our public post types * All of our public post types can have /post-name/ as the slug, so they better be unique across all posts * Typically core only accounts for posts and pages where the slug is /post-name/ */ function custom_parse_request_tricksy( $query ) { // Only noop the main query if ( ! $query->is_main_query() ) return; // Only noop our very specific rewrite rule match if ( 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) { return; } // 'name' will be set if post permalinks are just post_name, otherwise the page rule will match if ( ! empty( $query->query['name'] ) ) { $query->set( 'post_type', array( 'post', 'product', 'page' ) ); } } add_action( 'pre_get_posts', 'custom_parse_request_tricksy' ); |
Sau khi thêm đoạn code vào bạn nhớ lưu lại.
Sau đó để cho link sản phẩm hoạt động ổn định tránh lỗi 404 thì bạn vào Cài đặt (Settings) -> Đường dẫn tĩnh (Permalink) và ấn Lưu thay đổi (Save). Bạn không cần phải chỉnh sửa gì mà chỉ cần ấn Lưu để WordPress tự cập nhật lại là ok.
Lưu ý:
– Khi sử dụng code trên bạn sẽ xóa bỏ được đoạn/san-pham/ trong url nhưng có điều mình chưa hài lòng đó là trong menu quản trị WooCommerce sẽ mất đi 2 lựa chọn đó là Đơn hàng (Orders) và Các ưu đãi (Coupons).
– Do mục Các ưu đãi (Coupons) ít khi sử dụng nên khi nào bạn cần tạo các Mã giảm giá (Coupon) thì bạn có thể mở lại file functions.php và xóa đoạn code vừa thêm nó sẽ hiển thị lại để bạn tạo mã giảm giá. Sau khi tạo xong mã giảm giá bạn nhớ thêm lại code đó rồi lưu lại.
– Còn mục Đơn hàng (Orders) bạn có thể nhận thông báo đơn hàng bằng email nên không cần vào xem đơn hàng trong quản trị vì thế cũng không ảnh hưởng gì nhiều.
Những lỗi nhỏ này khi nào mình có cách khắc phục được mình sẽ update lại sau, nếu bạn có cách nào có thể đóng góp cho mình ở dưới ô comment nhé.
Leave a Reply