web-dev-qa-db-fra.com

Masquer/Afficher uniquement les catégories spécifiques dans wp-admin new-post.php

Quelqu'un peut-il me donner une fonction ou une idée de la méthode à utiliser pour masquer des catégories dans la zone de sélection de wp-admin?

J'ai un type de publication personnalisé et j'aimerais que mes auteurs puissent choisir entre 5 catégories seulement lorsqu'ils modifient leurs publications. J'aimerais que cela ne soit le cas que pour le type de message personnalisé et NON pour les messages normaux.

3
Eckstein

Quelque chose comme ça devrait le faire. Remplacez wpse_77670_getPermittedCategories() par quel que soit le groupe de catégories autorisé et 'your_custom_category' par votre taxonomie personnalisée correspondant à votre type de publication personnalisé.

/**
* filter terms checklist args to restrict which categories a user can specify
* @param array $args arguments for function get_terms()
* @param array $taxonomies taxonomies to search
* @return array
*/
function wpse_77670_filterGetTermArgs($args, $taxonomies) {
    // check whether we're currently filtering selected taxonomy
    if (implode('', $taxonomies) == 'your_custom_category') {
        $cats = wpse_77670_getPermittedCategories();    // as an array

        if (empty($cats))
            $args['include'] = array(99999999);     // no available categories
        else
            $args['include'] = $cats;
    }

    return $args;
}

if (is_admin()) {
    add_filter('get_terms_args', 'wpse_77670_filterGetTermArgs', 10, 2);
}

Modifier, pour travailler avec la taxonomie régulière de "catégorie" sur le type de publication personnalisé:

function wpse_77670_filterGetTermArgs($args, $taxonomies) {
    global $typenow;

    if ($typenow == 'tsv_userpost') {
        // check whether we're currently filtering selected taxonomy
        if (implode('', $taxonomies) == 'category') {
            $cats = array(89,90,91,92,93,94); // as an array

            if (empty($cats))
                $args['include'] = array(99999999); // no available categories
            else
                $args['include'] = $cats;
        }
    }

    return $args;
}

if (is_admin()) {
    add_filter('get_terms_args', 'wpse_77670_filterGetTermArgs', 10, 2);
}
5
webaware