Untitled
unknown
plain_text
a year ago
3.0 kB
25
Indexable
/**
* Hide specific product categories for a given user
*/
function hide_product_categories_for_user($q) {
// Check if we're on the shop page, product archive, or search results
if (is_shop() || is_product_category() || is_product_tag() || is_search()) {
// ID of the user you want to hide the categories from
$user_id = 123; // Replace with the actual user ID
// IDs of the categories you want to hide
$category_ids = array(456, 457, 458, 459, 460, 461, 462, 463); // Replace with your actual category IDs
if (get_current_user_id() == $user_id) {
$tax_query = $q->get('tax_query');
if (!is_array($tax_query)) {
$tax_query = array();
}
$tax_query[] = array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $category_ids,
'operator' => 'NOT IN'
);
$q->set('tax_query', $tax_query);
}
}
}
add_action('woocommerce_product_query', 'hide_product_categories_for_user');
/**
* Redirect user from hidden product pages
*/
function redirect_user_from_hidden_products() {
// Check if we're on a single product page
if (is_product()) {
global $post;
// ID of the user you want to hide the categories from
$user_id = 123; // Replace with the actual user ID
// IDs of the categories you want to hide
$category_ids = array(456, 457, 458, 459, 460, 461, 462, 463); // Replace with your actual category IDs
if (get_current_user_id() == $user_id) {
if (has_term($category_ids, 'product_cat', $post->ID)) {
wp_redirect(get_permalink(wc_get_page_id('shop')));
exit;
}
}
}
}
add_action('template_redirect', 'redirect_user_from_hidden_products');
/**
* Exclude categories from WooCommerce term queries
*/
function exclude_categories_from_term_queries($args, $taxonomies) {
// Only modify args for product category queries
if (in_array('product_cat', $taxonomies)) {
// ID of the user you want to hide the categories from
$user_id = 123; // Replace with the actual user ID
// IDs of the categories you want to hide
$category_ids = array(456, 457, 458, 459, 460, 461, 462, 463); // Replace with your actual category IDs
if (get_current_user_id() == $user_id) {
if (!isset($args['exclude'])) {
$args['exclude'] = array();
}
elseif (!is_array($args['exclude'])) {
$args['exclude'] = array($args['exclude']);
}
$args['exclude'] = array_merge($args['exclude'], $category_ids);
}
}
return $args;
}
add_filter('get_terms_args', 'exclude_categories_from_term_queries', 10, 2);Editor is loading...
Leave a Comment