Reputation: 83
I bought a WordPress theme for affiliate marketing business. I have 1000+ stores on my website and hence hundred of coupons on homepage.I simply write a short-code to fetch all coupons and they started to appear on homepage .All coupons are based on different categories.
How can i exclude a number of coupons from homepage and that is possible only if we can exclude some categories from homepage based on their IDs.
I Google it many times but each time i found "pre_get_posts" function to do so. But in my case, it's not working at all. The code is below
function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-5' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
Through this code i am trying to exclude desired categories. I also tried to modified above code in different ways but none of my solution/idea worked. What i think is the reason behind why above code is no working is the function only works for default "Category" option under "Posts"on Dashboard. And my categories are coming from another option on Dashboard that's "Coupons" -> "Offer Categories".
See screenshot: Offer Categories
May be or may be not, i need to modify the above function in a way that it can select my expected categories. But as i have lack of knowledge in PHP so i don't know what and how to do?
I'm badly stuck here and hoping to get some help from experts.
Thanks in advance
Upvotes: 3
Views: 790
Reputation: 9331
Try this code.
if(is_home() || is_front_page()){
$args_active_coupons['tax_query'][] = array(
'taxonomy' => 'offer_categories',
'field' => 'id',
'terms' => array(214),
'operator' => 'NOT IN',
);
}
Upvotes: 1
Reputation: 1085
If you want to hard code all the excluded category, you have to put your category ID with (-) prefix. e.g
function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-<CAT_ID>, -<CAT_ID>, -<CAT_ID>' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
Here: CAT_ID should be excluded category id.
In another way, you could use a plugin: https://wordpress.org/plugins/ultimate-category-excluder/
Upvotes: 0