Divi WordPress Theme
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

WordPress fix Reply To: custom post type subcategories 404 issue

Discussion in 'Misc WordPress Requests' started by aseem, Mar 17, 2018.

  1. aseem

    Guest

    Reply To: custom post type subcategories 404 issue, by aseem

    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

    Reply To: custom post type subcategories 404 issue
     
    #1

Share This Page

Monarch Social Sharing Plugin