我使用Simple Local Avatars允许我的博客作者上传头像。
我的目标是在成功上传后刷新页面。我的第一个想法是查看动作挂钩的simple-local-avatars.php
源代码。我希望在avatar_upload_success
方法的末尾附近会有edit_user_profile_update
之类的钩子,但是没有类似的可用。所以我需要找到另一种刷新页面的方法。
成功上传后如何刷新页面?
更新:为了让我的问题更加清晰,我的问题是如何重新加载页面,我的问题是如何仅在上传成功时重新加载页面。例如:在上传失败时,我不想重新加载。
更新2:所以我的下一次尝试是做这样的事情:
function simple_local_avatar_reload() {
$url = 'whatever the current page is';
wp_redirect( $url );
exit();
}
add_action( 'edit_user_profile_update', 'simple_local_avatar_reload', 99 );
但是这会导致已经发送的可怕标题'错误。
答案 0 :(得分:0)
我的解决方案是有条件地启用输出缓冲,然后在edit_user_profile_update
完成后执行页面刷新。例如:
/**
* Enable output buffering.
*/
function output_buffer() {
if ( isset ( $_POST['submit'] ) )
ob_start();
}
add_action( 'init', 'output_buffer' );
/**
* Refresh page after avatar upload.
*/
function simple_local_avatar_reload() {
header( 'Location: ' . $_SERVER['REQUEST_URI'] );
}
add_action( 'edit_user_profile_update', 'simple_local_avatar_reload', 99 );
注意:即使上传失败,也会执行重新加载。但这是一个解决方法我将不得不运行,除非我修改插件的核心(我不想这样做)。