需要将wp_reDirect放在哪里才能使其工作?

时间:2012-05-17 作者:Stephen S.

我在mysite/post\\u id/edit上有一个前端帖子编辑页面,正在尝试将非作者的用户重定向回帖子。以下是我正在使用的代码:

    <?php
    global $current_user; get_currentuserinfo();
    if($post->post_author != $current_user->ID):
    wp_redirect( the_permalink() ); exit;
    ?>
我一直遇到的问题是,这似乎只是显示帖子的永久链接,而不是重定向。

wp_redirect 表示“如果页面已启动,则不会调用wp\\u重定向,因此请确保向上调用它。”-但在将代码放在标题顶部之后。php文件我仍然收到了相同的问题,permalink被显示,而不是重定向。

在哪里可以添加此代码以使其重定向?

提前感谢!

EDIT: 尝试了米洛的建议,但在我更新米洛的建议之前,我会关注Tommix的帖子

3 个回复
最合适的回答,由SO网友:Milo 整理而成

一旦进入模板,就太晚了,因为已经发送了标题。您必须在请求的前面进行钩子检查,如模板重定向钩子:

add_action( \'template_redirect\', \'wpse52455_redirect\' );

function wpse52455_redirect(){
    // do your check and call wp_redirect here
}
请注意,这将在每次请求时调用,因此您还需要检查当前页面是否是您的编辑页面。

编辑-上面的代码应该放在你的主题中functions.php 文件

SO网友:Sander Schat

您可能需要为操作调用添加一些“优先级”。例如:

add_action(\'template_redirect\', \'user_logged_in\', 1, 1);

SO网友:Tommixoft

Fully working ANSWER:

global $current_user; get_currentuserinfo();
if($post->post_author != $current_user->ID){
wp_redirect(get_post_permalink($post->ID)); 
 exit();
}
结束

相关推荐