Funcționează admin_print_scripts-$hook_suffix pentru căi imbricate către fișiere individuale?
Poate fi folosit hook-ul admin_print_scripts-$hook_suffix
pentru un hook creat astfel: $hookname = get_plugin_page_hookname("my-quiz/lib/admin/$code_page", '' );
?
.. unde $code_page
este somefilename.php
.
Am încercat și nu pare să funcționeze. Cred că este din cauza căii fișierului?
ACTUALIZARE
Ceea ce este înregistrat de codul de mai sus este 'admin_page_my-quiz/lib/admin/question_form' dar acesta funcționează doar într-o pagină dacă faci:
<a href="<?php echo admin_url('admin.php?page=my-quiz/lib/admin/question_form.php&question=edit&question='.$question->ID); ?>" class='edit'>
<?php _e('Editează', 'my-locale'); ?>
</a>
Trebuie să adaug sufixul .php pentru ca link-ul să funcționeze, altfel primesc eroarea 'nu ai permisiunea'.
Funcția @t31os afișează 'nmsi-quiz/lib/admin/question_form.php' și astfel nu se potrivește cu 'admin_page_my-quiz/lib/admin/question_form'
acesta funcționează - add_action( 'admin_print_scripts-'.'my-quiz/lib/admin/question_form.php', array($this,'enqueue_my_js'));
Codul solicitat:
$plugin_scripts = array('question_form.php', 'manage_questions.php');
foreach($plugin_scripts as $code_page) {
$hookname = get_plugin_page_hookname("my-quiz/lib/admin/$code_page", '' );
$_registered_pages[$hookname] = true;
//fb($hookname);
}

Cred că este într-adevăr o întrebare dacă acel cod furnizează numele corect al hook-ului pentru pagina respectivă.
Iată o funcție simplă pe care o poți folosi pentru a afișa hook suffix pe fiecare pagină de administrare, va apărea într-o casetă de eroare roșie (astfel va fi ușor de observat) doar pentru administratori.
add_action( 'admin_notices', 'print_admin_pagehook' );
function print_admin_pagehook() {
global $hook_suffix;
if( !current_user_can( 'manage_options') )
return;
?>
<div class="error"><p><?php echo $hook_suffix; ?></p></div>
<?php
}
Încarcă pagina cu care ai probleme și compară valoarea pe care o vezi în casetă cu ceea ce obții din codul pe care l-ai postat.
Adăugare
Continuând din ultimul meu comentariu, poți face de fapt ceva de genul acesta..
add_action( 'admin_menu', 'testing_registered_pages', 100 );
function testing_registered_pages() {
global $_registered_pages, $submenu;
$plugin_scripts = array(
'Formular Întrebări' => array( 'page' => 'question_form', 'callback' => 'my_callback_1' ),
'Gestionează Întrebări' => array( 'page' => 'manage_questions', 'callback' => 'my_callback_2' )
);
foreach( $plugin_scripts as $title => $my_pages ) {
$hookname = get_plugin_page_hookname("my-quiz/lib/admin/$my_pages[page]", 'my-quiz' );
$_registered_pages[$hookname] = true;
$submenu['my-quiz'][] = array( $title, 'manage_options', "my-quiz/lib/admin/$my_pages[page]", $title );
add_action( $hookname, $my_pages['callback'] );
}
}
// Elimină add_action pentru a referenția fișiere reale, lasă-l dacă vrei să folosești o funcție callback
...există o singură problemă cu această abordare, și anume posibilitatea de a înfrânge cerințele de capabilitate ale paginilor.
Uită-te la acest URL.
example.com/wp-admin/admin.php?page=my-quiz/lib/admin/manage_questions
Putem înfrânge verificarea de capabilitate prin interogarea pentru..
example.com/wp-admin/admin.php?page=my-quiz/lib/admin/manage_questions.php
Dacă modificăm codul de mai devreme să folosească extensia de fișier, de ex..
$plugin_scripts = array(
'Formular Întrebări' => array( 'page' => 'question_form.php', 'callback' => 'my_callback_1' ),
'Gestionează Întrebări' => array( 'page' => 'manage_questions.php', 'callback' => 'my_callback_2' )
);
..și opțional dezactivăm callback-urile, adică să folosim un fișier real..
// add_action( $hookname, $my_pages['callback'] );
..atunci obținem..
example.com/wp-admin/admin.php?page=my-quiz/lib/admin/manage_questions.php
..este totuși posibil să înfrângi cerințele de capabilitate folosind..
example.com/wp-admin/admin.php?page=my-quiz/lib/admin/manage_questions
Indiferent dacă folosești un fișier real sau o funcție callback, în ambele cazuri cerințele de capabilitate (ca mai sus) pot fi ocolite (evident, acesta nu este un comportament dorit).
