On the category page, get the category object
-
16-10-2019 - |
Question
Right, hopefully a nice and simple one... I'm on a category page with the id of 4, I want to get the category object back so I can interogate a few values.
I've had a good old look in the WP codex with little success, remember I don't want to get the categories from a post, I want the category object from the current category.
Many thanks, Ben :-)
Solution
To get the category object use get_category
(codex). It's easy if you know the name, slug or ID, but if you don't you could use is_category
to check on which category you are and pass the ID to get_category
.
OTHER TIPS
Damn, so I did find the answer I was looking for:
$thisCat = get_category(get_query_var('cat'),false);
Never mind :-)
$wp_query->get_queried_object()
is a very versatile function. It will return the current category, tag, custom taxonomy term, author, page or post, depending on the page/archive you are viewing. Especially handy if you want to simplify your archive headings.
I'd personally get into a habit of calling get_term
or get_terms
, as the category functions are only wrapper functions that in turn call get_term(s)
anyway.
<?php
$queried_category = get_term( get_query_var('cat'), 'category' );
// echo $queried_category->term_id; // The category ID
// echo $queried_category->slug; // The category slug
// echo $queried_category->name; // The category name
// echo $queried_category->description; // The category description
?>
Familiaring yourself with the term functions will make dealing with custom taxonomies a little easier, because you'll be calling on these functions in such cases.
http://codex.wordpress.org/Function_Reference/get_term
http://codex.wordpress.org/Function_Reference/get_terms
And a function that i don't see used a great deal, but can be really handy.
http://codex.wordpress.org/Function_Reference/get_term_by
Which provides a means of fetching a term object based on name, slug or ID.
An interesting case wherein one of many category archive pages included in a custom menu returned an empty array for
get_the_category();
required me to run through all the different ways to skin a cat (no pun intended).
is_category() RETURNS true
get_the_category() RETURNS an empty array
the_category() RETURNS NULL
The final answer ended up being Ben Everard's
get_category(get_query_var('cat'), false) RETURNS the correct WPCategory object
Thanks!