¿Dónde se debe colocar wp_redirect para que funcione?
Tengo una página de edición de publicaciones en el front-end ubicada en mysite/post_id/edit y estoy intentando redirigir a los usuarios que no son el autor de vuelta a la publicación. Este es el código con el que estoy trabajando:
<?php
global $current_user; get_currentuserinfo();
if($post->post_author != $current_user->ID):
wp_redirect( the_permalink() ); exit;
?>
El problema que he tenido es que esto parece mostrar el permalink de la publicación en lugar de redirigir.
wp_redirect dice "wp_redirect no se llamará si la página ya ha comenzado, así que asegúrate de llamarlo más arriba." - pero después de colocar el código en la parte superior del archivo header.php todavía tuve el mismo problema de que se mostraba el permalink en lugar de redirigir.
¿Dónde sería el lugar apropiado para agregar este código para que haga la redirección?
¡Gracias de antemano!
EDITADO: Probé algo con el consejo de milo, pero seguiré el post de Tommix antes de actualizar sobre Milo

Una vez que estás en la plantilla ya es demasiado tarde, ya que las cabeceras ya han sido enviadas. Debes engancharte antes en la solicitud para comprobar, como con el hook template_redirect:
add_action( 'template_redirect', 'wpse52455_redirect' );
function wpse52455_redirect(){
// haz tu comprobación y llama a wp_redirect aquí
}
Ten en cuenta que esto se ejecutará en cada solicitud, por lo que también necesitas comprobar que la página actual es tu página de edición.
EDITADO - el código anterior debe ir en el archivo functions.php
de tu tema.

Este código actual está devolviendo No se puede modificar la información de la cabecera - las cabeceras ya fueron enviadas por

Extraño, para mí funciona perfectamente. Lo agregué en el archivo single.php. ¿Quizás tu archivo ya hace echo de algo? Coloca el código lo más arriba posible en el archivo php. Por supuesto, también debería obtener el $post porque si no lo obtiene, no sabrá si el usuario es el autor, así que debería ir después de que la variable $post tenga datos. El código es bueno, solo está mal ubicado :) ¿Tal vez pusiste este código en un archivo incluido?

Tienes razón - lo tengo funcionando parcialmente - aunque curiosamente está redirigiendo cuando ($post->post_author == $current_user->ID)
en lugar de cuando ($post->post_author != $current_user->ID)

¿qué sucede si intentas usar esto $post->post_author !== $current_user->ID

ah ya veo, no puede obtener el $post->author porque esa variable no ha sido establecida tan temprano en la página
