Где нужно разместить wp_redirect, чтобы он работал?
У меня есть страница редактирования поста на фронтенде по адресу mysite/post_id/edit, и я пытаюсь перенаправить пользователей, не являющихся авторами, обратно к посту. Вот код, с которым я работаю:
<?php
global $current_user; get_currentuserinfo();
if($post->post_author != $current_user->ID):
wp_redirect( the_permalink() ); exit;
?>
Проблема в том, что вместо перенаправления просто отображается постоянная ссылка поста.
wp_redirect говорит: "wp_redirect не будет вызван, если страница уже начала загружаться, поэтому убедитесь, что вызываете его выше." - но даже после размещения кода в самом начале файла header.php я все равно получаю ту же проблему с отображением ссылки вместо перенаправления.
Где нужно правильно разместить этот код, чтобы перенаправление работало?
Заранее спасибо!
EDIT: Попробовал что-то по совету milo, но сначала проверю рекомендации Tommix перед обновлением поста Milo.

Когда вы находитесь в шаблоне, уже слишком поздно, так как заголовки уже отправлены. Вам нужно подключиться раньше в процессе запроса, например, используя хук template_redirect:
add_action( 'template_redirect', 'wpse52455_redirect' );
function wpse52455_redirect(){
// выполните проверку и вызовите wp_redirect здесь
}
Обратите внимание, что это будет вызываться при каждом запросе, поэтому вам также нужно проверить, что текущая страница является страницей редактирования.
РЕДАКТИРОВАНИЕ - приведённый выше код должен быть помещён в файл functions.php
вашей темы.

Этот текущий код возвращает ошибку Cannot modify header information - headers already sent by

Странно, у меня отлично работает. Я добавил его в файл single.php. Возможно, ваш файл уже что-то выводит? Поместите код как можно выше в начале php-файла. Конечно, он также должен получать $post, потому что если он его не получит, то не узнает, является ли пользователь автором, поэтому он должен идти после того, как переменная $post получит данные. Потому что код хороший, просто неправильное размещение :) Может, вы поместили этот код во включаемом файле?

Ты прав - у меня частично работает - хотя, что странно, он перенаправляет, когда ($post->post_author == $current_user->ID)
, а не когда ($post->post_author != $current_user->ID)

что произойдет, если попытаться использовать $post->post_author !== $current_user->ID

понял, не получается получить $post->author, потому что эта переменная еще не была установлена на этом этапе загрузки страницы
