Forum Replies Created

Viewing 1 replies (of 1 total)
  • Hi @shojikama,

    I am working with some colleagues in WordCamp Kathmandu 2018. As a contributor, I am supposed to go through some issues on WordPress. Here I found your post on the issue of custom post type subcategories 404.

    As far as I have understood your problem, I guess this might help you

    Event post type:
    ————————————-
    Changed post type name to from Eventi to eventi. Post type names cannot contain capital letters.
    Changed has_archive to eventi
    Added rewrite arguments

    Post type links
    ———————————–
    Added function to handle customized rewrite args Source 1, Source 2
    This configuration will result in the following URL structures:

    Event post type archive URL:
    —————————–
    /eventi

    Event post type URLs:
    ——————————-
    /eventi/event-category-name/example-event-post-name/

    Event category URLs:
    ———————————–
    /eventi/event-category-name/

    Event post type URLs when no event category has been set:
    —————————————————————
    /eventi/uncategorized/event-with-no-category/

    Below is the updated code. Remember to visit the Settings > Permalinks page in the admin area after updating the code.

    Code:

    //EVENTS 
    // Register Custom Post Type
    function wpse239701_events_post_type() {
        $labels = array(
            'name'                  => _x( 'Eventi', 'Post Type General Name', 'text_domain' ),
            'singular_name'         => _x( 'Eventi', 'Post Type Singular Name', 'text_domain' ),
            'menu_name'             => __( 'Eventi', 'text_domain' ),
            'name_admin_bar'        => __( 'Eventi', 'text_domain' ),
            'archives'              => __( 'Item Archives', 'text_domain' ),
            'parent_item_colon'     => __( 'Parent Item:', 'text_domain' ),
            'all_items'             => __( 'All Items', 'text_domain' ),
            'add_new_item'          => __( 'Add New Item', 'text_domain' ),
            'add_new'               => __( 'Add New', 'text_domain' ),
            'new_item'              => __( 'New Item', 'text_domain' ),
            'edit_item'             => __( 'Edit Item', 'text_domain' ),
            'update_item'           => __( 'Update Item', 'text_domain' ),
            'view_item'             => __( 'View Item', 'text_domain' ),
            'search_items'          => __( 'Search Item', 'text_domain' ),
            'not_found'             => __( 'Not found', 'text_domain' ),
            'not_found_in_trash'    => __( 'Not found in Trash', 'text_domain' ),
            'featured_image'        => __( 'Featured Image', 'text_domain' ),
            'set_featured_image'    => __( 'Set featured image', 'text_domain' ),
            'remove_featured_image' => __( 'Remove featured image', 'text_domain' ),
            'use_featured_image'    => __( 'Use as featured image', 'text_domain' ),
            'insert_into_item'      => __( 'Insert into item', 'text_domain' ),
            'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
            'items_list'            => __( 'Items list', 'text_domain' ),
            'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
            'filter_items_list'     => __( 'Filter items list', 'text_domain' ),
        );
        $args = array(
            'label'                 => __( 'Eventi', 'text_domain' ),
            'description'           => __( 'Descrizione evento', 'text_domain' ),
            'labels'                => $labels,
            'supports'              => array('title', 'thumbnail', 'editor' ),
            'taxonomies'            => array('events_categories'),
            'hierarchical'          => true,
            'public'                => true,
            'show_ui'               => true,
            'show_in_menu'          => true,
            'menu_position'         => 5,
            'show_in_admin_bar'     => true,
            'show_in_nav_menus'     => true,
            'can_export'            => true,
            'has_archive'           => 'eventi',        
            'exclude_from_search'   => false,
            'publicly_queryable'    => true,
            'capability_type'       => 'page',
            'rewrite' => array(
                'slug' => 'eventi/%events_categories%',
                'with_front' => false
            ),              
        );
        register_post_type( 'eventi', $args );
    
    }
    add_action( 'init', 'wpse239701_events_post_type' );
    
    function wpse239701_events_taxonomy() {  
        register_taxonomy(  
            'events_categories',  
            'eventi',        
            array(  
                'hierarchical' => true,  
                'label' => 'Categorie',
                'query_var' => true,
                'rewrite' => array(
                    'slug' => 'eventi', 
                    'with_front' => false 
                )
            )  
        );  
    }  
    add_action( 'init', 'wpse239701_events_taxonomy' );
    
    function wpse239701_events_post_link( $permalink, $post_id, $leavename ) {
        if ( strpos( $permalink, '%events_categories%' ) === false ) {
            return $permalink;
        }
    
        // Get post
        $post = get_post($post_id);
        if ( ! $post ) {
            return $permalink;
        }
    
        // Get taxonomy terms
        $terms = wp_get_object_terms($post->ID, 'events_categories');   
        if ( ! is_wp_error( $terms ) && ! empty( $terms ) && is_object( $terms[0] ) ) {
            $taxonomy_slug = $terms[0]->slug;
        } else { 
            $taxonomy_slug = 'uncategorized'; 
        }
    
        return str_replace( '%events_categories%', $taxonomy_slug, $permalink );
    }   
    // add_filter( 'post_link', 'wpse239701_events_post_link', 10, 3 ); // Not needed - we aren't adding our custom taxonomy to posts, but if we were, this would be used.
    add_filter( 'post_type_link', 'wpse239701_events_post_link', 10, 3 );
    

    You can go through the source link as well:
    https://wordpress.stackexchange.com/questions/239701/custom-post-type-categories-gives-404-error

Viewing 1 replies (of 1 total)