フロントエンドの投稿編集ページが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のアドバイスで何かを試してみたが、Miloの話を更新する前にTommixの投稿に従う。
あなたがテンプレートに入ったら、ヘッダはすでに送信されているので遅すぎます。テンプレートリダイレクトフックのように、チェックするリクエストの前半でフックする必要があります。
add_action( 'template_redirect', 'wpse52455_redirect' );
function wpse52455_redirect(){
// do your check and call wp_redirect here
}
これは every リクエストで呼び出されるので、現在のページがあなたの編集ページであることを確認する必要もあります。
編集 - 上記のコードはあなたのテーマのfunctions.php
ファイルに入ります。