Ecommerce Shopify WordPress Discussion

Custom post type URl Cutomization

I am creating a custom CPT where I have customized CPT URL structure of CPT, I am using the rewrite rule for this but it is conflicting This is a Lessons CPT, I want to remove lessons from the URL and if any category or subcategory is selected in the post then the URL structure should be parent category/child-category/post name, I have also customized the category URL structure where I want to remove lesson-category in this example:- http://localhost/custom_theme/lesson-category/california/ the URL should be like this http://localhost/custom_theme/california/ I have Custom Lessons CPT where I want to customize the URl structure Here is the scenario:- I want to remove the lesson in Custom CPT - http://localhost/custom_theme/lesson/paino_lesson/ the URL should be like this http://localhost/custom_theme/paino_lesson/ if any category or subcategory is selected in the post then the URL structure should be parent category/child category/post name, I want to remove the lesson category in this example:- http://localhost/custom_theme/lesson-category/california/ the URL should be like this http://localhost/custom_theme/california/ // START: CPT 'Lessons' add_action('init', 'register_lessons_post_type'); function register_lessons_post_type() { $labels = array( 'name' => 'Lesson', 'singular_name' => 'Lesson', 'menu_name' => 'Lesson', 'add_new' => 'Add New Lesson', 'add_new_item' => 'Add New Lesson', 'edit_item' => 'Edit Lesson', 'new_item' => 'New Lesson', 'view_item' => 'View Lesson', 'view_items' => 'View Lessons', 'search_items' => 'Search Lessons', 'not_found' => 'No lesson found', 'not_found_in_trash' => 'No lesson found in trash', 'all_items' => 'All Lessons', 'archives' => 'Lessons', 'attributes' => 'Template', 'insert_into_item' => 'Insert into lesson', 'uploaded_to_this_item' => 'Uploaded to this lesson', 'filter_items_list' => 'Filter lessons list', 'items_list_navigation' => 'Lesson list navigation', 'items_list' => 'Lessons list', 'item_published' => 'Lesson published', 'item_published_privately' => 'Lesson published privately', 'item_reverted_to_draft' => 'Lesson reverted to draft', 'item_scheduled' => 'Lesson scheduled', 'item_updated' => 'Lesson updated', 'taxonomies' => array( 'lesson_category' ), // Link to the custom taxonomy ); $args = array( 'labels' => $labels, 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => '/%lesson_category%'), // Set the custom permalink structure 'menu_position' => 5, 'menu_icon' => 'dashicons-location-alt', 'supports' => array('title', 'editor', 'thumbnail','excerpt', 'custom-fields', 'elementor'), ); register_post_type('lessons', $args); } add_action('init', 'register_lesson_category_taxonomy'); function register_lesson_category_taxonomy() { $labels = array( 'name' => 'City', 'singular_name' => 'City', 'search_items' => 'Search City', 'all_items' => 'All Cities', 'parent_item' => 'Parent City or State', 'parent_item_colon' => 'Parent City or State:', 'edit_item' => 'Edit City', 'update_item' => 'Update City', 'add_new_item' => 'Add New City', 'new_item_name' => 'New City Name', 'menu_name' => 'Cities or Locations', ); $args = array( 'hierarchical' => true, 'labels' => $labels, 'show_ui' => true, 'show_admin_column' => true, 'query_var' => true, 'rewrite' => array( 'slug' => '/', // Set the slug for the 'lesson_category' taxonomy 'with_front' => false, 'hierarchical' => true ), ); // Link this taxonomy to the 'lessons' custom post type register_taxonomy('lesson_category', array('lessons'), $args); } // Change the permalink structure for the lessons post type add_filter('post_type_link', 'custom_lessons_permalink_structure', 10, 4); function custom_lessons_permalink_structure($post_link, $post, $leavename, $sample) { if ('lessons' === $post->post_type && 'publish' === $post->post_status) { $terms = get_the_terms($post->ID, 'lesson_category'); if (!empty($terms)) { $term_slugs = array(); foreach ($terms as $term) { // Traverse through parent categories and add them to the array $parent_chain = get_ancestors($term->term_id, 'lesson_category'); $parent_chain = array_reverse($parent_chain); foreach ($parent_chain as $parent_id) { $parent_term = get_term($parent_id, 'lesson_category'); $term_slugs[] = $parent_term->slug; } $term_slugs[] = $term->slug; } $post_link = home_url('/') . implode('/', $term_slugs) . '/' . $post->post_name . '/'; } else { // No category selected, keep the URL simple $post_link = home_url('/') . $post->post_name . '/'; } } return $post_link; } // Add the %lesson_category% tag to the rewrite rules add_filter('rewrite_rules_array', 'custom_lessons_rewrite_rules'); function custom_lessons_rewrite_rules($rules) { $new_rules = array(); $terms = get_terms(array('taxonomy' => 'lesson_category', 'hide_empty' => false)); foreach ($terms as $term) { $term_path = $term->slug; $new_rules[$term_path . '/([^/]+)/?$'] = 'index.php?lesson_category=$matches[1]'; } // Add a rule for the case when no category is selected $new_rules['([^/]+)/?$'] = 'index.php?lessons=$matches[1]'; return $new_rules + $rules; }
TurboCommerce make the better internet purchasing globaly

Turbo Multi-language Translator

Make the better internet purchasing globaly

Turbosify SEO Speed Booster

5.0 (7) Free plan available
Get better conversions by improving store loading speed Installed

Turbo Multi-language Chat - AI Customer service in one hand

TurboCommerce make the better internet purchasing globaly
Our products

The help you need, when you need it

App by Turbo Engine

3 apps • 5.0 average rating

Turbosify Speed Booster

5.0 (7)
Get better conversions by optimizing shopify store Google page speed Installed

Turbosify Translator for Wordpress Woocommerce

5.0 (74) Free Wordpress Woocommerce Plugin
Translate your wordpress website to multiple language within 1 click, no configuration needed, no No technical required

Grow your business here

Whether you want to sell products down the street or around the world, we have all the tools you need.