I am trying to create a dynamic loop to get the custom taxonomy categories to show in the navigation. I have registered my custom post type "services" with this code:
<?php
function asb_post_types(){
register_post_type('services', array(
// remove editor so it takes away default content field
'supports' => array ('title','excerpt', 'editor', 'thumbnail'),
'rewrite' => array(
// CHANGES ARCHIVE LINK
'slug' => 'services'
),
// create the archive for events
'has_archive' => true,
// makes visible to editors & previews of the site
'public' => true,
// tell it what icon to use
'menu_icon' => 'dashicons-admin-appearance',
'taxonomies' => array('post_tag'),
'labels' => array(
// display name for admin panel
'name' => 'Services',
'add_new_item' => 'Add New Service',
'edit_item' => "Edit Services",
'all_items' => "All Services",
'singular_name' => "service"
)
));
}
add_action('init', 'asb_post_types');
?>
In my functions.php I registered the custom taxonomy with the following code:
function service_category_taxonomy() {
$labels = array(
'name' => _x( 'Service Category', 'taxonomy general name' ),
'singular_name' => _x( 'service category', 'taxonomy singular name' ),
'search_items' => __( 'Search Service Categories' ),
'all_items' => __( 'All Service Categories' ),
'parent_item' => __( 'Parent Service Categories' ),
'parent_item_colon' => __( 'Parent Service Category:' ),
'edit_item' => __( 'Edit Service Categories' ),
'update_item' => __( 'Update Service Categories' ),
'add_new_item' => __( 'Add New Service Category' ),
'new_item_name' => __( 'New Service Categories Name' ),
'menu_name' => __( 'Service Category' ),
);
// Now register the taxonomy
register_taxonomy('service categories',array('services'), array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_in_rest' => true,
'show_admin_column' => true,
'query_var' => true,
'public' => true,
'exclude_from_search' => false,
'rewrite' => array( 'slug' => 'service_category' ),
));
}
add_action( 'init', 'service_category_taxonomy', 0 );
In my navigation, I am using this loop to call the specific categories from the taxonomy:
<?php
$terms = get_terms(
array(
'taxonomy' => 'service categories',
'hide_empty' => true,
)
);
// Check if any term exists
if ( ! empty( $terms ) && is_array( $terms ) ) {
// add links for each category
foreach ( $terms as $term ) { ?>
<li >
<a href="<?php echo esc_url( get_term_link( $term ) ) ?>">
<?php echo $term->name; ?>
</a>
</li>
<?php
}
}
?>
I have flushed my permalinks, and when I hover my mouse over the links it generates a URL that should work, but when you click on it, it just refreshes the front-page.php template. My blog archive and index pages work properly for the blog so I am kind of at a loss why only this is not functioning as expected. Any help is appreciated.
CodePudding user response:
After doing some research the WordPress only allows lowercase letters, dash, and underscore for the custom taxonomy name. I changed it to a new name and it worked perfectly. Hopefully, this helps someone in the future!
