I’m trying to figure out how to add my custom taxonomy categories to a template page and have them link to all custom post types of that category.
Here is what I have so far. I created a plugin to hold the functions creating the custom post type (contractor) and custom post taxonomy category (contractor_category). This is working as far as I have a template page(page-contractors-full-width.php) that lists all of the contractors. At the top of the page I have a loop that lists all of the custom categories (contractor_category). The issue is the links are going to a 404 page. I can’t figure out what the slug should be for each custom category. I have tried /contractor/contractor_category and /contractor_category
I tried creating archive-contractor.php and archive-contractor_category.php and taxonomy-contractor_category.php just to see if any of those would work but they didn’t work. I’ve pureed reading through the wordpress docs on this but it’s a bit over my head. I’m better looking at examples lol..
Here is my plugin code where create the custom post type and custom taxonomy
add_action( 'init', 'create_contractor_category_tax' );
function create_contractor_category_tax() {
register_taxonomy(
'contractor_category',
'contractor',
array(
'label' => __( 'Contractor Category' ),
'rewrite' => array( 'slug' => 'contractor_category' ),
'hierarchical' => true,
)
);
}
function nari_post_type_contractor() {
$supports = array(
'title', // post title
'editor', // post content
'author', // post author
'thumbnail', // featured images
'excerpt', // post excerpt
'custom-fields', // custom fields
'comments', // post comments
'revisions', // post revisions
'post-formats', // post formats
);
$labels = array(
'name' => _x('Contractors', 'plural'),
'singular_name' => _x('Contractor', 'singular'),
'menu_name' => _x('Contractors', 'admin menu'),
'name_admin_bar' => _x('Contractors', 'admin bar'),
'add_new' => _x('Add New', 'add new'),
'add_new_item' => __('Add New Contractor'),
'new_item' => __('New Contractor'),
'edit_item' => __('Edit Contractor'),
'view_item' => __('View Contractor'),
'all_items' => __('All Contractors'),
'search_items' => __('Search Contractors'),
'not_found' => __('No Contractors found.'),
);
$args = array(
'supports' => $supports,
'labels' => $labels,
'public' => true,
'query_var' => true,
'rewrite' => array('slug' => 'contractor'),
'has_archive' => true,
'hierarchical' => false,
);
register_post_type('contractor', $args);
}
add_action('init', 'nari_post_type_contractor');
Here is the code where I loop through and get the custom taxonomy links
// Get the taxonomy's terms
$terms = get_terms(
array(
'taxonomy' => 'contractor_category',
'hide_empty' => true,
)
);
// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
// add links for each category
foreach ( $terms as $term ) { ?>
<a class="btn btn-default" href="<?php echo esc_url( get_term_link( $term ) ) ?>">
<?php echo $term->name; ?>
</a><?php
}
}
Any help would be greatly appreciated 🙂