Die Administratorrolle in WordPress Multisite entfernt Inhalte beim Speichern von Seiten

Lesezeit: 3 Minuten

Ich habe eine WordPress-Multisite eingerichtet und versuche, Seiteninhalte mit Datenattributen auf einigen HTML-Tags zu speichern. Superuser können problemlos speichern, aber wenn Administratoren oder niedrigere Rollen speichern, werden die im Tag enthaltenen Datenattribute entfernt. Gibt es eine Möglichkeit, anderen Benutzerrollen zu erlauben, Datenattribute in HTML zu speichern?

Nur um das klarzustellen, es werden nicht die HTML-Tags selbst entfernt, sondern die Datenattribute, etwa so:

<p data-item="1">String</p>

Das Obige wird gespeichert als:

<p>String</p>

Dies ist auch kein Tinymce-Problem, ich scanne zwischen WYSIWYG und der Quellansicht hin und her und es bleibt, nur wenn ich die Seite speichere, wird sie entfernt, und nur für Benutzer, die niedriger als Super User sind eine Multisite.

Jede Hilfe ist willkommen, danke!

Womit Sie ein Problem haben, ist die unfiltered_html Fähigkeit. Wenn Sie diesen Codex-Link lesen, werden Sie Folgendes bemerken:

Notiz: In WordPress Multisite haben nur Super-Admins die unfiltered_html Fähigkeit.

Um dies zu umgehen, müssen Sie die hinzufügen unfiltered_html Fähigkeit zum administrator Rolle. Wenn Sie nicht wissen, wie das geht, lesen Sie weiter:

Sie müssen die verwenden add_cap() Funktion. Etwas wie das Folgende sollte ausreichen. Wenn Ihr gesamtes Netzwerk ein Thema verwendet, können Sie den folgenden Code in das einfügen functions.php Datei des aktiven Designs.

Andernfalls möchten Sie vielleicht a verwenden Must-Use-Plugin – Erstellen Sie im Grunde eine Datei wie custom-functions.phpfügen Sie den folgenden Code ein und fügen Sie ihn ein /wp-content/mu-plugins/ (Erstellen Sie es, wenn es noch nicht existiert). Dadurch wird es zu einem „Must-Use Plugin“, das immer geladen wird, egal was passiert, und nicht aktiviert/deaktiviert werden kann.

function so_51604149_add_cap(){
    $role = get_role( 'administrator' );

    if( $role ){
        $role->add_cap( 'unfiltered_html' ); 
    }
}
add_action( 'init', 'so_51604149_add_cap' );

Alternativ gibt es eine Mischung aus Plugins vom Typ “Benutzerberechtigung” und “Benutzerrolle”, die möglicherweise helfen können. Der Kern Ihres Problems ist nur, dass Super-Admins die einzige Rolle auf WordPress MultiSite mit der sind unfiltered_html Fähigkeit.

Xhynk hat mich zu dieser Lösung geführt, danke!

Die unfiltered_html-Fähigkeit ist veraltet, daher habe ich Folgendes in meinen Code eingefügt, um zu simulieren, was diese Fähigkeit bewirkt hat:

add_action( 'init', 'kses_unfiltered_html' );
function kses_unfiltered_html() {
    $user = wp_get_current_user();

    if ( current_user_can('edit_pages') )
        kses_remove_filters();
}

Das ist, was ich brauchte, es erlaubt allen Benutzern, die Seiten bearbeiten können, Inhalte ungefiltert zu speichern. Andere da draußen benötigen möglicherweise eine Rolle anstelle von edit_pages, wie zum Beispiel:

add_action( 'init', 'kses_unfiltered_html' );
function kses_unfiltered_html() {
    $user = wp_get_current_user();

    if ( current_user_can('administrator') )
        kses_remove_filters();
}

Dieser Filter hat bei mir funktioniert:

// Add the unfiltered_html capability back in to WordPress 3.0 multisite. o(8MNTW9B2WUi(ITf8N&0rc$
function allow_unfiltered_html_multisite( $caps, $cap, $user_id, $args ) {
    if ( $user_id !== 0 && $cap === 'unfiltered_html' ) {
        $user_meta = get_userdata($user_id);
        if ( in_array( 'administrator', $user_meta->roles, true ) ) {
            // Re-add the cap
            unset( $caps );
            $caps[] = $cap;
        }
    }
    return $caps;
}
add_filter('map_meta_cap', 'allow_unfiltered_html_multisite', 10, 4 );```

1245230cookie-checkDie Administratorrolle in WordPress Multisite entfernt Inhalte beim Speichern von Seiten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy