it-swarm.com.de

Nur bestimmte Kategorien in wp-admin new-post.php verstecken/anzeigen

Kann mir jemand eine Funktion oder eine Vorstellung von der Methode geben, die ich verwenden müsste, um Kategorien aus dem Auswahlfeld in wp-admin auszublenden?

Ich habe einen benutzerdefinierten Beitragstyp und möchte, dass meine Autoren NUR zwischen 5 dieser Kategorien wählen können, während sie ihre Beiträge bearbeiten. Ich möchte, dass dies nur bei benutzerdefinierten Posts und NICHT bei regulären Posts der Fall ist.

3
Eckstein

So etwas sollte es tun. Ersetzen Sie wpse_77670_getPermittedCategories() durch, wie auch immer Sie das Array der zulässigen Kategorien auswählen, und 'your_custom_category' durch eine beliebige benutzerdefinierte Taxonomie für Ihren benutzerdefinierten Beitragstyp.

/**
* 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);
}

Bearbeiten, um mit der regulären Kategorie-Taxonomie für einen benutzerdefinierten Beitragstyp zu arbeiten:

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