Come puoi verificare se ti trovi in una determinata pagina nella sezione WP Admin?Ad esempio, come posso verificare se sono nella pagina Utenti> Il tuo profilo?
-
-
Gentile spintaper ricordarti che una rispostanon è stata accettata.Senessuna delle rispostefornite risponde sufficientemente allatua domanda o stai lottandoper comprendere leinformazionifornite,ti preghiamo di commentareperfarcelo sapere.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 risposta
- voti
-
- 2011-01-19
Ilmodoperfarlo è usare l'hook 'admin_enqueue_scripts'permetterein codai file di cui haibisogno.Questo hook riceverà un $ hook_suffix relativo allapagina corrente che viene caricata:
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
Esiste una variabileglobalein wp-admin chiamata $pagenow che contieneilnome dellapagina corrente,adesempioedit.php,post.php,ecc.
Puoi anche controllare la richiesta $ _GETper restringere ulteriormente latuaposizione,adesempio:
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 ..} `peresempio controlla se sei su un custompagina delleimpostazioni deltema `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
Ilmetodopiù completo è
get_current_screen
aggiuntoin WordPress 3.1$screen = get_current_screen();
restituisce
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] => )
-
"Restrizioni di utilizzo - Questafunzione è definitanellamaggiorparte dellepagine di amministrazione,manonin tutte.Quindi ci sono casiin cuiis_admin () restituiràtrue,mailtentativo di chiamareget_current_screen () risulteràin unerrorefataleperchénon è definito.Unesempionoto è wp-admin/personalizza.php. Lafunzione restituiscenull se chiamata dall'hook admin_init.Dovrebbeessere corretto usarloin un hook successivo come 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 Un rapido controllo suggerisce chenon èpiù così,per quantoposso vedere che `get_current_screen ()` è sicuro da usare sututte lepagine di amministrazione.@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 questo è ancorail caso,secondo la documentazione collegata soprae lamiaesperienza.@shahar this is still the case, according to the documentation linked above and my experience.
- 1
- 2019-03-14
- fabrik
-
- 2011-01-27
Offrire unmetodo/approccio alternativo alla domandaprecedente.
// 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 .. ); }
Questometodoprende dimira lepagine specifichein modopiù direttoedevita di averbisogno della logica condizionale all'interno del callback (perché haigiàfatto quella distinzionenell'hook selezionato).
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).
-
Vorrei sapereperché questa rispostanon ha ottenutopiù voti,copre l'esatto caso d'usonella domandae fornisce la soluzionein una quantitàminima di codice.Ilfeedback sarebbebello ..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
Trovo strano chenessuno abbiamenzionatoilfatto che lafunzione add_menu_page restituisce un action hook chepuoi usarepereseguire determinate azioni solo su quellepagine
$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(/*...*/); }
Seti serve $ hooke non hai aggiunto lapagina delmenu da solo,il documento è qui
Adesempio l'hookper unapagina dimenu diprimo livello è
load-toplevel_page_ $ MenuSlug
L'hookper unapagina di sottomenu è
carica- $ MenuSlug_page_ $ SubMenuSlug
Seguendo questa logica,l'hookper lapagina delprofilo dell'utente è
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
Sto creando unplugine voglio aggiungerebit dijavascriptnellatestata di amministrazione,ma soloper alcunepagine di amministrazione.Nonintendopagine comein unapagina WordPress che creitu stesso,mapiuttostopagine di sezioni di amministrazioneesistenti come "Iltuoprofilo","Utenti",ecc. Esiste unafunzione wp specificaper questa attività?Sto cercandoe riesco atrovare solo lafunzionebooleana
is_admin
e gli action hook,manon unafunzionebooleana che controlla solo.