it-swarm.com.de

So können Benutzer keine neuen Tags erstellen, aber vorhandene verwenden

Ich möchte, dass eine bestimmte Rolle neue Tags hinzufügen kann, aber andere Benutzer sollten nur in der Lage sein, mithilfe der Textleiste nach vorhandenen Tags zu suchen.

Ich weiß, dass ich die Tag-Leiste in der Seitenleiste ausblenden kann, aber das möchte ich nicht. Ich möchte nur "Sorry, dieses Tag existiert nicht" oder etwas, wenn jemand ein Tag eingibt, das nicht existiert.

Gibt es ein Plugin oder eine Funktion, die das für mich erledigt?

6
Jorn Reuvers

Sie können sich mit pre_insert_term verbinden, die Taxonomie überprüfen und wie folgt feststellen, ob der Benutzer die angegebene Rolle hat oder nicht:

function disallow_insert_term($term, $taxonomy) {

    $user = wp_get_current_user();

    if ( $taxonomy === 'post_tag' && in_array('somerole', $user->roles) ) {

        return new WP_Error(
            'disallow_insert_term', 
            __('Your role does not have permission to add terms to this taxonomy')
        );

    }

    return $term;

}

add_filter('pre_insert_term', 'disallow_insert_term', 10, 2);

Dadurch wird verhindert, dass der Benutzer neue Begriffe einfügt. Er kann jedoch vorhandene Begriffe suchen und zu einem Beitrag hinzufügen.

Beachten Sie, dass ein Benutzer im Post-Edit-Bildschirm einen nicht vorhandenen Termnamen eingeben und die Eingabetaste drücken oder auf die Schaltfläche "Hinzufügen" klicken kann, um den Term zum DOM hinzuzufügen. An diesem Punkt wird der Term jedoch erst in die Datenbank aufgenommen, wenn Der Benutzer veröffentlicht oder aktualisiert den Beitrag, zu welchem ​​Zeitpunkt der Begriff nicht mehr zulässig ist.

6
userabuser