web-dev-qa-db-de.com

woher soll ich wissen, ob sich der Administrator auf der Bearbeitungsseite oder im Post befindet?

Ich benutze dies, nachdem ich überprüft habe, ob der Benutzer admin ist

   if ( isset($_GET['action'])  && $_GET['action'] === 'edit' )

gibt es einen besseren Weg?

15
DrMosko

Sie können get_current_screen verwenden, um dies zu bestimmen.

$screen = get_current_screen();
if ( $screen->parent_base == 'edit' ) {
    echo 'edit screen';
}

Ich weiß nicht, ob ich genau sagen würde, dass dies immer besser ist, es kommt darauf an, was gebraucht wird, aber wahrscheinlich würde ich es so machen. Der große Vorteil dieser Methode ist, dass Sie auf mehr Informationen zugreifen können und ergo mehr und andere Unterscheidungen vornehmen kann. Schauen Sie sich einfach die Dokumentation an, um zu verstehen, was ich meine.

Es sollte in späteren Hooks verwendet werden, Codex sagt:

Die Funktion gibt null zurück, wenn sie vom Hook admin_init aufgerufen wird. Die Verwendung in einem späteren Hook wie current_screen sollte in Ordnung sein.

14
Nicolai
  • Benutze 'get_current_screen', stelle vorher sicher, dass es existiert.
  • Wie der Codex sagt "Diese Funktion ist auf den meisten Admin-Seiten definiert, aber nicht auf allen."
  • Dies übrigens filtert auch normale (dem Leser zugewandte) Ansichten heraus (lesen Sie diesen Satz erneut, mit Betonung auf Verwaltungsseiten ).
  • das nächste, was Sie herausfinden möchten, ist wahrscheinlich, ob Sie sich tatsächlich auf einer Seite oder einem Beitrag befinden ...

    // Remove pointless post meta boxes
    function FRANK_TWEAKS_current_screen() {
        // "This function is defined on most admin pages, but not all."
        if ( function_exists('get_current_screen')) {  
    
            $pt = get_current_screen()->post_type;
            if ( $pt != 'post' && $pt != 'page') return;
    
            remove_meta_box( 'authordiv',$pt ,'normal' );        // Author Metabox
            remove_meta_box( 'commentstatusdiv',$pt ,'normal' ); // Comments Status Metabox
            remove_meta_box( 'commentsdiv',$pt ,'normal' );      // Comments Metabox
            remove_meta_box( 'postcustom',$pt ,'normal' );       // Custom Fields Metabox
            remove_meta_box( 'postexcerpt',$pt ,'normal' );      // Excerpt Metabox
            remove_meta_box( 'revisionsdiv',$pt ,'normal' );     // Revisions Metabox
            remove_meta_box( 'slugdiv',$pt ,'normal' );          // Slug Metabox
            remove_meta_box( 'trackbacksdiv',$pt ,'normal' );    // Trackback Metabox
        }
    }
    add_action( 'current_screen', 'FRANK_TWEAKS_current_screen' );
    
4
Frank Nocke

Besserer Weg:

globale Variable $ pagenow

global $pagenow;
if (( $pagenow == 'post.php' ) || (get_post_type() == 'post')) {

    // editing a page

}
if ($pagenow == 'profile.php') {

    // editing user profile page

}

quelle: https://wordpress.stackexchange.com/a/7281/33667

4
T.Todua

Um zu überprüfen, ob die aktuelle Verwendung ein Administrator ist, verwende ich die folgende Funktion:

<?php    
function is_user_admin(){
    if ( is_user_logged_in() ){
        if( current_user_can( 'manage_options' ) )
        {
          return true;
        }
        else
        {
          return false;
        }
    }
    return false;
    }
?>
0
Vigs