管理员第一个钩子,输出超文本标记语言?

时间:2014-09-14 作者:Bryan Willis

我想load-(page) 是管理屏幕中处理HTML输出的第一个挂钩,但我不能完全确定。基本上我在寻找template_rediectget_header, 这在管理方面不起作用(如果我错了,请纠正我)。

我想连接到每个管理页面。我猜使用$page_nowget_current_screen() 但对于如何在所有页面上实现它们,我的头脑变得一片空白:

$page = get_current_screen()->parent_file;
add_action( \'load-$page.php\', \'add_action_all_load_hook\', 1, 0 );
在前端,我会这样做:

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);
我想应该是

add_action(\'load-$page\', \'link_rel_buffer_end\', 1, 0);
add_action(\'in_admin_footer\', \'link_rel_buffer_end\', 999);
但我不知道怎么做load-(page) 每次装载时。

//基于@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);

1 个回复
SO网友:birgire

你可以试试这个:

/**
 * 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\' );
如果你需要在每个管理页面上激活一个钩子。

例如:

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:如果您需要在</html>, 您可以使用PHP函数register_shutdown_function() 在PHP脚本完成执行后运行自己的回调。但是请注意,根据下面的说明,输出缓冲区已经发送到客户机comment on the PHP docs.

结束