web-dev-qa-db-ja.com

管理者が編集ページまたは投稿にあるかどうかを知る方法

ユーザーがadminかどうかを確認した後にこれを使用します

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

もっと良い方法はありますか?

15
DrMosko

これを判断するには get_current_screen を使用できます。

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

私はこれが常により良いと言うかどうかわからない、それは必要なものに依存しますが、それはおそらく私がそうする方法です。この方法の大きな利点は、より多くの情報にアクセスできることと、エルゴはより多くの異なる区別をすることができることです。私が何を意味するのか理解するためにドキュメンテーションを見てください。

それは後のフックで使われるべきです、 Codex は言う:

admin_initフックから呼び出された場合、この関数はnullを返します。 current_screenのような後のフックで使っても大丈夫です。

14
Nicolai
  • 'get_current_screen'を使用してください。事前に確認してください、存在します。
  • codexの言うとおり "この関数はほとんどの管理者ページで定義されていますが、全部ではありません。"
  • これにより、通常の(読者向きの)ビューも除外されます( adminページ に重点を置いて、その文をもう一度読みます)。
  • あなたが実際にページや投稿をしているのであれば、次のことを考えてみましょう。

    // 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

もっと良い方法:

グローバル変数 $ pagenow

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

    // editing a page

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

    // editing user profile page

}

ソース: https://wordpress.stackexchange.com/a/7281/33667

4
T.Todua

現在の使用が管理者であるかどうかを確認するには、次の機能を使用します。

<?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