2017-04-22 2 views
0

Ich bin ziemlich neu in Wordpress, also nicht sicher, was ich falsch mache. Auf meiner Wordpress-Website können Benutzer benutzerdefinierte Post-Typen (Produkte) erstellen. Ich möchte den Zugriff auf eine Seite wie diese verhindern: example.com/post-a-listing, indem Benutzer auf eine andere Seite umgeleitet werden, wenn sie nicht mindestens ein Produkt erstellt haben. Hier ist, was ich versucht habe, aber dies nicht funktioniert ..Warum funktioniert diese Umleitung nicht?

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

Ich hatte ähnliches Problem irgendwann zurück. Ich habe ob_start() oben in meinem Skript hinzugefügt, was wie ein Zauber wirkte! – manian

+0

danke, aber wo genau sollte ich es platzieren? Weil dieser Code, den ich zur Verfügung gestellt habe, ist in der functions.php –

+0

Versuchen Sie 1st & 2nd Antworten hier http://stackoverflow.com/questions/19587154/wp-redirect-is-not-working – manian

Antwort

3

Das Problem für die Funktion ist $ user_id tatsächlich, von wo aus man die $ user_id mit raus kann es werben?

Verwenden Sie innerhalb der Funktion get_current_user_id(), um die aktuelle Benutzer-ID abzurufen.

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

I ' m bekomme weißen Bildschirm .. –

+0

Sorry, habe nicht die Klammern geschlossen :) es funktioniert :) danke! –