web-dev-qa-db-fra.com

Masquer des catégories spécifiques du widget de catégorie

J'essaie de cacher un grand nombre de catégories à mon widget de catégorie. J'ai essayé quelques plugins mais aucun ne semble vouloir me laisser utiliser l'option de menu déroulant. J'ai regardé dans le crochet widget_categories_args et cela semble être ce que je veux mais je ne peux pas le faire fonctionner.

En tout cas voici mon code

function widget_categories_args_filter( $cat_args ) {
$exclude_arr = array( 57,61,63,56,55,62,52,53,54,67,65 );

if( isset( $cat_args['exclude'] ) && !empty( $cat_args['exclude'] ) )
    $exclude_arr = array_unique( array_merge( explode( ',', $cat_args['exclude'] ), $exclude_arr ) );
$cat_args['exclude'] = implode( ',', $exclude_arr );
return $cat_args;
}

add_filter( 'widget_categories_args', 'widget_categories_args_filter', 10, 1 );

J'ai pris ça d'ici: https://codex.wordpress.org/Plugin_API/Filter_Reference/widget_categories_args

Je mets ceci dans le functions.php de mon thème. Cela ne devrait pas importer même si la fonction est définie pour les plugins, non?

5
FranticJ3

Je sais que ce message est assez ancien, mais parce que je suis tombé sur le même problème et que ce message a dépassé celui avec une solution, j'ai décidé d'ajouter ceci, ce qui a fonctionné pour moi.

Source: http://coffeecupweb.com/how-to-exclude-or-hide-categories-from-category-widget-in-wordpress-sidebar/

//Hide categories from WordPress category widget
function exclude_widget_categories($args){
    $exclude = "1,4,8,57,80";
    $args["exclude"] = $exclude;
    return $args;
}
add_filter("widget_categories_args","exclude_widget_categories");
6
Kevin

Après plusieurs recherches et tests, le masquage des catégories de publication pour les éléments de la liste et la liste déroulante sont effectués séparément car ils sont appelés par différents identificateurs de filtre.

Pour les éléments de catégorie de liste, utilisez

add_filter("widget_categories_args","YOUR_CUSTOM_FUNCTION");

Pour les éléments de catégorie déroulants, utilisez

add_filter("widget_categories_dropdown_args","YOUR_CUSTOM_FUNCTION");

Référence: https://basicwp.com/exclude-categories-from-category-widgets-in-wordpress/

0
kpatrickos

Masquer la catégorie uncatecogrized/default dans WooCommerce:

Je suppose que je ne suis pas le seul à être venu sur cette page à la recherche d'un moyen de masquer la catégorie par défaut/non catégorisée introduite dans WooCommerce 3.3.

Si vous êtes l'un d'entre eux, au lieu de coder en dur l'ID de la catégorie, qui peut être différent dans différents environnements/installations, vous pouvez utiliser le fragment de code suivant, modifié à partir de celui de Mike Jolley pour le masquer du Woocommerce Widget Catégories de produits:

<?php // Do not include this if already open!

/**
 * Code goes in theme functions.php.
 *
 * If you use dropdown instead of hierachical view, 
 * hook to the following filter instead: 
 *      `woocommerce_product_categories_widget_dropdown_args`
 */
add_filter( 'woocommerce_product_categories_widget_args', 'custom_woocommerce_product_categories_widget_args' );

function custom_woocommerce_product_categories_widget_args( $args ) {
  $args['exclude'] = get_option( 'default_product_cat' );
  return $args;
}
0
jgangso

Cela fonctionne: https://Gist.github.com/peltopiri/76e7d1143e33b424633114103cfae5ec

<?php
function exclude_woocommerce_widget_product_categories($widget_args) {
    //Insert excluded category ids here
    $excludes = array(12,33);
    $includes = explode(",",$widget_args['include']);

    $includes = array_filter($includes, function($value) use ($excludes) {
      return !in_array($value, $excludes);
    });
    $widget_args["include"] = implode(",", $includes);
    return $widget_args;
}
add_filter( 'woocommerce_product_categories_widget_dropdown_args', 'exclude_woocommerce_widget_product_categories');
add_filter( 'woocommerce_product_categories_widget_args', 'exclude_woocommerce_widget_product_categories');
0
jaripp