web-dev-qa-db-de.com

So ändern Sie im Customizer die auf der Registerkarte "Site-Identität" erforderlichen Funktionen

Ich erstelle eine Multisite, auf der Site-Administratoren keine "Optionen verwalten" -Funktion haben. Das Problem ist, dass sie ohne diese Begrenzung die Registerkarte "Site-Identität" im Customizer nicht sehen können, wo sie das Site-Symbol (Favicon) sowie den Site-Namen ändern können.

Gibt es eine Möglichkeit, die erforderliche Funktion zum Anzeigen dieser Registerkarte und zum Speichern ihres Inhalts zu ändern? Wenn nicht, gibt es eine Möglichkeit, die gleichen Felder wie auf dieser Registerkarte, jedoch auf einer benutzerdefinierten Registerkarte im Customizer anzuzeigen?

Danke und einen schönen Tag noch.

1
ChrisPlaneta

So habe ich es aus WordPress interpretiert docs zumindest. Ursprünglich wurden diese Einstellungen mit add_setting vorgenommen, und hier wurde die Funktion ursprünglich festgelegt. Glücklicherweise können wir get_setting verwenden, um diesen Wert zu ändern. Es scheint sehr gut für Ihren Fall zu funktionieren.

function wpseo_206907_add_back_customizer_controls_for_not_admins( $wp_customize ) {
    $wp_customize->get_setting( 'blogname' )->capability = 'edit_theme_options'; // or edit_posts or whatever capability your site owner has
}
add_action( 'customize_register', 'wpseo_206907_add_back_customizer_controls_for_not_admins', 1000 );



Wenn sie aus irgendeinem Grund keinen Zugriff auf den Customizer haben, müssen Sie ihnen zuerst die Fähigkeit edit_theme_options geben.

function wpseo_206951_add_capability_for_non_admin() {
    $roleObject = get_role( 'editor' ); // whoever should have access to theme changes
    if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
        $roleObject->add_cap( 'edit_theme_options' );
    }
}
add_action( 'admin_init', 'wpseo_206951_add_capability_for_non_admin');


Dadurch erhalten sie Zugriff auf Folgendes:
Aussehen> Widgets
Aussehen> Menüs
Aussehen> Passen Sie an, ob sie vom aktuellen Thema unterstützt werden
Aussehen> Hintergrund
Aussehen> Kopfzeile


Wenn Sie diese Seiten lieber alle zusammen ausblenden möchten, gehen Sie folgendermaßen vor:

function wpseo_206907_remove_by_caps_admin_menu() {
    if ( !current_user_can('manage_options') ) {
            remove_menu_page('themes.php'); // Appearance Menu on Admin
            remove_submenu_page( 'themes.php', 'widgets.php' );
            remove_submenu_page( 'themes.php', 'nav-menus.php' );
            remove_submenu_page( 'themes.php', 'theme-editor.php' );
    }
}
add_action('admin_menu', 'wpseo_206907_remove_by_caps_admin_menu', 999);


Wenn Sie jedoch möchten, dass sie Zugriff auf bestimmte Seiten wie Widgets und Menüs haben, jedoch nicht auf Themen, führen Sie stattdessen Folgendes aus:

add_action( 'admin_init', 'wpseo_206907_lock_theme' );  
function wpseo_206907_lock_theme() {
    global $submenu, $userdata;
    get_currentuserinfo();

    if ( $userdata->ID != 1 ) { 
        unset( $submenu['themes.php'][5] );
        unset( $submenu['themes.php'][15] );
    }
}


Sie möchten dies auch tun, um den Abschnitt für Themenänderungen aus dem Customizer zu entfernen:

function wpseo_206951_remove_customizer_controls_all( $wp_customize ) { 
   if ( !current_user_can('manage_options') ) {

   $wp_customize->remove_section("themes"); // Removes Themes section from backend

   // To remove other sections, panels, controls look in html source code in chrome dev tools or firefox or whatever and it will tell you the id and whether it's a section or panel or control. 
   //Example below (uncomment to use)

   // $wp_customize->remove_section("title_tagline");
   // $wp_customize->remove_panel("nav_menus");
   // $wp_customize->remove_panel("widgets");
   // $wp_customize->remove_section("static_front_page");

   }
}
add_action( 'customize_register', 'wpseo_206951_remove_customizer_controls_all', 999 );
1
Bryan Willis

Sie können den Abschnitt title_tagline aus dem Customizer entfernen und Ihren eigenen Abschnitt mit Zollkontrolle hinzufügen, bei dem es sich im Grunde um eine Kopie des Stücks "Site Identity" handelt hier .

Sie müssen nur die dort angegebenen Funktionen mit denen Ihrer Administratoren ändern.

Sie können im offiziellen Dokument nachlesen, wie Sie den WordPress Customize API Manager verwenden.

0
Pavel Selitskas