我正在使用简单的局部化身来允许我的博客作者上传一个化身。
我的目标是在成功上传后刷新页面。我的第一个想法是查看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 );但这会导致可怕的“报头已经发送”错误。
发布于 2014-08-08 11:39:38
我的解决方案是有条件地启用输出缓冲,然后在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 );注意:即使上传失败,也会执行重新加载。但这是一个解决办法,除非我修改插件的核心(我不想这么做),否则我将不得不运行。
https://stackoverflow.com/questions/25201221
复制相似问题