it-swarm.com.de

Festlegen der Standardbildschirmoption für Darstellung -> Menüs

Ist es möglich, die Bildschirmoptionen für Appearance>Menus zu steuern? Ich arbeite an einem Thema und einer neuen Wordpress-Installation, bei der ich noch nie eine der Bildschirmoptionen berührt habe (jedenfalls nicht unter Darstellung> Menüs). Ich hatte 3 benutzerdefinierte Beitragstypen. Von diesen war einer "vermisst". Ich untersuchte die Bildschirmoptionen und es stellte sich heraus, dass eine nicht markiert war, während die anderen beiden markiert waren. Ich weiß nicht, was ich getan habe, um es auf diese Weise zu bekommen, aber ich möchte, dass es für Benutzer trotzdem konsistent ist . Hat jemand irgendwelche Ideen oder Informationen zu diesem Thema? Im Idealfall möchte ich wissen, dass alle drei benutzerdefinierten Beitragstypen bei einer Neuinstallation oder einem neuen Benutzer überprüft werden.

1
byronyasgur

Diese Option wird in der Tabelle wp_usermeta mit dem Namen meta_key von metaboxhidden_nav-menus gespeichert.

Wenn wir alle Felder ausblenden, ist dies der meta_value der Option:

array(
    "nav-menu-theme-locations", 
    "add-custom-links", 
    "add-post", 
    "add-page", 
    "add-portfolio", 
    "add-category", 
    "add-post_tag", 
    "add-post_format", 
    "add-location"
)

Es gibt einen CPT, portfolio. Wenn wir wollten, dass es jedes Mal sichtbar ist , wenn der Benutzer die Seite besucht (/wp-admin/nav-menus.php), würde dieser Code dies tun:

add_filter( 'get_user_option_metaboxhidden_nav-menus', 'cpt_always_visible_wpse_87882', 10, 3 );

function cpt_always_visible_wpse_87882( $result, $option, $user )
{ 
    if( in_array( 'add-portfolio', $result ) )
        $result = array_diff( $result, array( 'add-portfolio' ) );

    //$show_boxes = array( 'cpt1', 'cpt2', 'cpt3' );
    //if( in_array( $show_boxes, $result ) )
    //  $result = array_diff( $result, $show_boxes );

    return $result;
}

Dies erzwingt jedoch, dass der CPT sichtbar ist, selbst wenn der Benutzer die Bildschirmoption deaktiviert. Beim nächsten Besuch der Seite wird die Box wieder sichtbar.

Um dies einmal nach der Benutzerregistrierung zu tun, sollte der Aktions-Hook user_register zusammen mit der Funktion verwendet werden update_user_meta .

Für eine Neuinstallation kann ein benutzerdefinierter install.php verwendet werden. Möglicherweise ist eine andere Technik verfügbar, aber nicht sicher ...

3
brasofilo