2017-04-22 12 views
0

私はWordpressにはかなり新しいので、私が間違っているのか分かりません。私のWordpressサイトでは、ユーザーはカスタムの投稿タイプ(製品)を作成することができます。私は、少なくとも1つの製品を作成していない場合、別のページにユーザーをリダイレクトすることによって、example.com/post-a-listingのようなページへのアクセスを禁止しようとしています。ここでなぜこのリダイレクトが機能しないのですか?

function yoursite_user_has_posts($user_id) { 
     $result = new WP_Query(array(
     'author'=>$user_id, 
     'post_type'=>'product', 
     'post_status'=>'publish', 
     'posts_per_page'=>1, 
    )); 
     return (count($result->posts)!=0); 
    } 

add_action('template_redirect', 'redirect_to_specific_page'); 

    function redirect_to_specific_page() { 

    if (is_page('post-a-listing') && ! yoursite_user_has_posts($user_id)) { 

    wp_redirect('https://example.com/', 301); 
     exit; 
     } 
+0

いつか同じような問題が戻ってきました。スクリプトの先頭にob_start()を追加しました。これは魅力的でした! – manian

+0

ありがとうございますが、正確にどこに配置する必要がありますか?私が提供したこのコードはfunctions.phpにあります –

+0

ここで1回目と2回目の回答を試してくださいhttp://stackoverflow.com/questions/19587154/wp-redirect-is-not-working – manian

答えて

3

は、あなたがそれを参照してとの$ USER_IDを得ることができるところから、関数の問題は$実際USER_IDさ..私が試したが、これは動作していない何ですか?

機能内にget_current_user_id()を使用すると、現在のユーザーIDが取得されます。

function redirect_to_specific_page() { 
     $user_id = get_current_user_id(); 
     if (is_page('post-a-listing') && ! yoursite_user_has_posts($user_id)) { 
     wp_redirect('https://example.com/', 301); 
     exit; 
     } 
    } 
+0

私は、白い画面を表示しています。 –

+0

申し訳ありませんが、括弧を閉じていない:)それは働く:)感謝! –

関連する問題