Comment pouvez-vous vérifier si vous êtes dans une page particulière de la section WP Admin?Par exemple, comment puis-je vérifier si je suis dans la page Utilisateurs> Votre profil?
-
-
Un léger coup depoucepour vous rappeler qu'une réponsen'apas été acceptée.Si aucune des réponsesfourniesne répond suffisamment à votre question ou si vous avez dumal à comprendre lesinformationsfournies,veuillez commenterpournous lefaire savoir.Gentle nudge to remind you an answer has not been accepted. If none the answers provided answer your question sufficiently or you're struggling to understand the information provided please comment to let us know.
- 1
- 2011-02-24
- t31os
-
5 réponses
- votes
-
- 2011-01-19
Pour cefaire,utilisez le hook 'admin_enqueue_scripts'pourmettreen file d'attente lesfichiers dont vous avezbesoin.Ce hook recevra un $ hook_suffix qui se rapporte à lapage actuelle chargée:
function my_admin_enqueue($hook_suffix) { if($hook_suffix == 'appearance_page_theme-options') { wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery')); wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css'); ?> <script type="text/javascript"> //<![CDATA[ var template_directory = '<?php echo get_template_directory_uri() ?>'; //]]> </script> <?php } } add_action('admin_enqueue_scripts', 'my_admin_enqueue');
The way to do this is to use the 'admin_enqueue_scripts' hook to en-queue the files you need. This hook will get passed a $hook_suffix that relates to the current page that is loaded:
function my_admin_enqueue($hook_suffix) { if($hook_suffix == 'appearance_page_theme-options') { wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery')); wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css'); ?> <script type="text/javascript"> //<![CDATA[ var template_directory = '<?php echo get_template_directory_uri() ?>'; //]]> </script> <?php } } add_action('admin_enqueue_scripts', 'my_admin_enqueue');
-
- 2011-01-19
Ilexiste une variableglobale dans wp-admin appelée $pagenow qui contient lenom de lapage courante,c'est-à-direedit.php,post.php,etc.
Vouspouvez également consulter la requête $ _GETpour affiner davantage votreemplacement,parexemple:
global $pagenow; if (( $pagenow == 'post.php' ) && ($_GET['post_type'] == 'page')) { // editing a page } if ($pagenow == 'users.php') { // user listing page } if ($pagenow == 'profile.php') { // editing user profile page }
There is a global variable in wp-admin called $pagenow which holds name of the current page, ie edit.php, post.php, etc.
You can also check the $_GET request to narrow your location down further, for example:
global $pagenow; if (( $pagenow == 'post.php' ) && ($_GET['post_type'] == 'page')) { // editing a page } if ($pagenow == 'users.php') { // user listing page } if ($pagenow == 'profile.php') { // editing user profile page }
-
`global $pagenow;if (('admin.php'===$pagenow) && ('prefix-theme-settings'===$ _GET ['page'])) {logic ..} `parexemple vérifie si vous êtes sur unepage desparamètres duthème `admin.php?page=prefix-theme-settings`.`global $pagenow; if ( ( 'admin.php' === $pagenow ) && ( 'prefix-theme-settings' === $_GET['page'] ) ) { logic.. }` for example checks if you are on a custom theme settings page `admin.php?page=prefix-theme-settings`.
- 1
- 2018-02-14
- lowtechsun
-
- 2013-09-06
Laméthode laplus complèteest
get_current_screen
ajouté dans WordPress 3.1$screen = get_current_screen();
renvoie
WP_Screen Object ( [action] => [base] => post [id] => post [is_network] => [is_user] => [parent_base] => edit [parent_file] => edit.php [post_type] => post [taxonomy] => )
The most comprehensive method is
get_current_screen
added in WordPress 3.1$screen = get_current_screen();
returns
WP_Screen Object ( [action] => [base] => post [id] => post [is_network] => [is_user] => [parent_base] => edit [parent_file] => edit.php [post_type] => post [taxonomy] => )
-
"Restrictions d'utilisation - Cettefonctionest définie sur laplupart despages d'administration,maispastoutes.Il y a donc des cas oùis_admin () retourneratrue,maistenter d'appelerget_current_screen ()entraînera uneerreurfatale carellen'estpas définie.Unexemple connuest wp-admin/personnaliser.php. Lafonction renvoienull sielleest appelée àpartir du hook admin_init.Il devrait êtrepossible de l'utiliser dans un hook ultérieurtel que current_screen."- [Codex] (https://codex.wordpress.org/Function_Reference/get_current_screen)."Usage Restrictions -- This function is defined on most admin pages, but not all. Thus there are cases where is_admin() will return true, but attempting to call get_current_screen() will result in a fatal error because it is not defined. One known example is wp-admin/customize.php. The function returns null if called from the admin_init hook. It should be OK to use in a later hook such as current_screen. " -- [Codex](https://codex.wordpress.org/Function_Reference/get_current_screen).
- 3
- 2018-01-26
- That Brazilian Guy
-
@ThatBrazilianGuy Une vérification rapide suggère que cen'estplus le cas,pour autant queje sache,`get_current_screen ()`peut être utiliséen toute sécurité surtoutes lespages d'administration.@ThatBrazilianGuy A quick check suggests this is no longer the case, as far as I can see `get_current_screen()` is safe to use on all admin pages.
- 0
- 2019-01-27
- Steven
-
@shahar c'esttoujours le cas,d'après la documentation liée ci-dessuset monexpérience.@shahar this is still the case, according to the documentation linked above and my experience.
- 1
- 2019-03-14
- fabrik
-
- 2011-01-27
Proposer uneméthode/approche alternative à la question ci-dessus.
// When you are viewing the users list or your editing another user's profile add_action( 'admin_print_scripts-users.php', 'your_enqueue_callback' ); // When you are editing your own profile add_action( 'admin_print_scripts-profile.php', 'your_enqueue_callback' ); function your_enqueue_callback() { wp_enqueue_script( .. YOUR ENQUEUE ARGS .. ); }
Cetteméthode cibleplus directement lespages spécifiqueset évite d'avoirbesoin d'une logique conditionnelle dans votre rappel (car vous avez déjàfait cette distinction dans le hook sélectionné).
To offer an alternative method/approach to the above question.
// When you are viewing the users list or your editing another user's profile add_action( 'admin_print_scripts-users.php', 'your_enqueue_callback' ); // When you are editing your own profile add_action( 'admin_print_scripts-profile.php', 'your_enqueue_callback' ); function your_enqueue_callback() { wp_enqueue_script( .. YOUR ENQUEUE ARGS .. ); }
This method targets the specific pages more directly and avoids needing conditional logic inside your callback(because you've already made that distinction in the selected hook).
-
J'aimerais savoirpourquoi cette réponsen'apas obtenuplus de votes,couvre le cas d'utilisationexact de la questionet fournit la solution dans unminimum de code.Les commentaires seraientbien.Wish i knew why this answer didn't get more votes, covers the exact use case in the question, and provides the solution in a minimal amount of code. Feedback would be nice..
- 0
- 2014-01-28
- t31os
-
- 2017-10-24
Jetrouvebizarre quepersonnen'aitmentionné lefait que lafonction add_menu_page renvoie un hook d'action que vouspouvez utiliserpoureffectuer certaines actions uniquement sur cespages
$hook = add_menu_page($menu_title, $page_title, $capability, $slug, $function, $icon_url, $position); add_action( 'load-' . $hook, 'my_admin_enqueue_scripts' ); function my_admin_enqueue_scripts() { wp_enqueue_script(/*...*/); wp_enqueue_style(/*...*/); }
Si vous avezbesoin du $ hooket que vousn'avezpas ajouté vous-même lapage demenu,le documentest ici
Parexemple,le crochetpour unepage demenu deniveau supérieurest
load-toplevel_page_ $ MenuSlug
Le crochetpour unepage de sous-menuest
load- $ MenuSlug_page_ $ SubMenuSlug
Suivant cette logique,le hook de lapage deprofil de l'utilisateurest
load-users_page_profile
I find it weird that no one has mentioned the fact that the add_menu_page function returns an action hook which you can use to do certain actions only on those pages
$hook = add_menu_page($menu_title, $page_title, $capability, $slug, $function, $icon_url, $position); add_action( 'load-' . $hook, 'my_admin_enqueue_scripts' ); function my_admin_enqueue_scripts() { wp_enqueue_script(/*...*/); wp_enqueue_style(/*...*/); }
If you need the $hook and you didn't add the menu page yourself the doc is here
For instance the hook for a top level menu page is
load-toplevel_page_$MenuSlug
The hook for a submenu page is
load-$MenuSlug_page_$SubMenuSlug
Following that logic, the hook for the user's profile page is
load-users_page_profile
Je suisen train de créer unpluginet je souhaite ajouter desbits dejavascript dans latête d'administrationmais uniquementpour certainespages d'administration.Jene veuxpas dire despages comme dans unepage WordPress que vous créez vous-mêmemaisplutôt despages de section d'administrationexistantestelles que "Votreprofil","Utilisateurs",etc.J'ai cherchéet jene trouve que lafonctionbooléenne
is_admin
et les hooks d'action,maispas unefonctionbooléenne qui vérifie simplement.