Je pense que load-(page)
est le premier point d'ancrage de l'écran d'administration qui traite de la sortie HTML, mais je n'en suis pas tout à fait sûr. En gros, je recherche l'équivalent de template_rediect
ou get_header
, qui ne fonctionne pas du côté de l'administrateur (corrigez-moi si je me trompe).
Je voudrais accrocher dans chaque page d'administration. J'imagine que je vais utiliser $page_now
ou get_current_screen()
, mais je ne sais pas comment les appliquer sur toutes les pages:
$page = get_current_screen()->parent_file;
add_action( 'load-$page.php', 'add_action_all_load_hook', 1, 0 );
Sur le front-end je ferais ceci:
function link_rel_buffer_callback($buffer) {
$buffer = preg_replace('ORIGINAL', 'NEW', $buffer);
return $buffer;
}
function link_rel_buffer_start() {
ob_start("link_rel_buffer_callback");
}
function link_rel_buffer_end() {
ob_flush();
}
add_action('template_redirect', 'link_rel_buffer_start', -1);
add_action('get_header', 'link_rel_buffer_start');
add_action('wp_footer', 'link_rel_buffer_end', 999);
Je pense que l'équivalent serait
add_action('load-$page', 'link_rel_buffer_end', 1, 0);
add_action('in_admin_footer', 'link_rel_buffer_end', 999);
mais je ne peux pas comprendre comment faire load-(page)
sur chaque charge.
// UPDATE BASE SUR L’EXEMPLE DE @BIRGIRE
add_action( 'admin_init', 'wpse_admin_init' );
function wpse_admin_init( $buffer )
{
if( ! defined( 'DOING_AJAX') || ! DOING_AJAX )
ob_start( 'wpse_buffering' );
}
function wpse_buffering( $buffer )
{
$buffer = preg_replace('FIND', 'REPLACE', $buffer);
return $buffer;
}
function wpse_buffering_shutdown() {
ob_flush();
}
add_action('in_admin_footer', 'wpse_buffering_shutdown', 9999);
Vous pouvez essayer celui-ci:
/**
* Fires as an admin screen or script is being initialized.
*
* Note, this does not just run on user-facing admin screens.
* It runs on admin-ajax.php and admin-post.php as well.
*
* This is roughly analgous to the more general 'init' hook, which fires earlier.
*
* @since 2.5.0
*/
do_action( 'admin_init' );
si vous avez besoin d'un hook activé sur chaque page d'administration.
Par exemple:
add_action( 'admin_init', 'wpse_admin_init' );
function wpse_admin_init( $buffer )
{
if( ! defined( 'DOING_AJAX') || ! DOING_AJAX )
ob_start( 'wpse_buffering' );
}
function wpse_buffering( $buffer )
{
return $buffer;
}
ps: Si vous devez accrocher la pièce après </html>
, vous pouvez utiliser la fonction PHP register_shutdown_function()
pour exécuter votre propre rappel le script PHP a fini de s'exécuter. Mais notez que les tampons de sortie ont déjà été envoyés au client, conformément à ce commentaire sur le PHP docs .