0

我正在尝试将 Wordpress 的前端登录重定向到他们注册时自动创建的帖子(以自定义帖子类型)。

我可以使用 wp_query 获取我想要重定向它们的 URL。我想这不是最好的方法,但我不知道足够的 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 过滤器本身,但是我现在很迷茫,只是在黑暗中拍摄了很多照片。

感谢您的帮助,如果有其他信息可以使其对其他人更有帮助或更容易回答,请告诉我。谢谢!

4

1 回答 1

0

我最终使用模板重定向来完成这项工作。我认为从技术上讲有更好的方法来做到这一点,但它的加载速度非常快,并且完全符合我的需要。

因此,现在,当用户登录时,它会转到直接 url-/profiles-并且该页面上的模板只是一个重定向。我使用了这篇关于随机重定向的精彩杂志帖子中的想法和一些示例代码来使其工作。

这是我在我的 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(); ?>

这对我有用,所以我暂时保持原样:)

于 2013-09-10T15:59:55.750 回答