2013-09-09 1 views
0

Я пытаюсь сделать входной логин для Wordpress перенаправленным на сообщение (в пользовательском типе сообщений), которое было автоматически создано при их регистрации.Redirect Wordpress User to the own Post in Front-End Логин

Я могу получить URL-адрес, который я хочу перенаправить с помощью wp_query. Я предполагаю, что это не лучший способ сделать это, но я не знаю достаточно php, чтобы понять это. Вот моя нынешняя попытка, но он просто печатает URL на пустую страницу с тем же URL входа они были уже в (правильный, по крайней мере!):

function my_login_redirect($redirect_to, $request, $user){ 
    global $user, $post; 
    $args = array(
     'author' => $current_user->ID, 
     'post_type' => 'course-providers', 
     'showposts' => 1, 
     'caller_get_posts' => 1 
    ); 
    $my_query = null; 
    $my_query = new WP_Query($args); 

    if($my_query->have_posts()) { 
    while ($my_query->have_posts()) : $my_query->the_post(); ?> 
     <?php wp_redirect (the_permalink()); ?> 
     <?php 
    endwhile; 
    } else { 
     echo "This User Has no Profile"; 
    } 

} 
add_filter("login_redirect", "my_login_redirect", 10, 3); 

Кроме того, я думаю, мне не нужно wp_redirect и что я должен просто использовать фильтр login_redirect, но опять же, я довольно потерялся прямо сейчас и просто делаю много снимков в темноте.

Спасибо за помощь, и дайте мне знать, если есть дополнительная информация, которая сделает это более полезным для других или более легким для ответа. Благодаря!

+0

вы пробовали просто 'заголовок («Location:/correctURL»);' перенаправления ? – Vector

+0

Нет ... Я просто попытался изменить строку и выводит то же самое, что и строка wp_redirect. Спасибо за идею, хотя! Или - если это не то, что вы имели в виду, дайте мне знать :) – Jerry

ответ

0

В итоге я использовал перенаправление шаблона, чтобы выполнить эту работу. Я предполагаю, что есть технически лучший способ сделать это, но он загружается очень быстро и делает именно то, что мне нужно.

Итак, теперь, когда пользователь входит в систему, он переходит к прямым url-/profiles - и шаблон на этой странице является просто перенаправлением. Я использовал идеи и некоторые примеры кода из этого smashing magazine post on random redirects, чтобы заставить его работать.

Вот функция, которую я использовал в моем файле functions.php для шаблона, чтобы сделать редирект случиться:

function profile_redirect() { 
// This is a template redirect 
// Whenever someone goes to /profile (or any page using the profile template) 
// this function gets run 

if (is_user_logged_in()) { 
    global $current_user, $post; 
    $args = array(
     'author' => $current_user->ID, 
     'post_type' => 'profile', 
     'posts_per_page' => 1 
     ); 
    $my_query = null; 
    $my_query = new WP_Query($args); 

    if($my_query->have_posts()) { 
     while ($my_query->have_posts()) 
      $my_query->the_post(); 
      //We have a post! Send them to their profile post. 
      wp_redirect (get_permalink()); 
     exit; 
    } else { 
     // If there are no posts, send them to the homepage 
     wp_redirect (get_bloginfo('url')); 
     exit; 
    } 
    wp_reset_query(); 
} else { 
    // If they're not logged in, send them to the homepage 
    wp_redirect (get_bloginfo('url')); 
    exit; 
} 

} 

Затем на шаблоне профиля, я положил это на вершине с открытия тега PHP запустить функцию:

profile_redirect(); ?> 

Это работает для меня, поэтому я оставлю это как сейчас :)