单击菜单选项时重定向用户

我正在建立一个新网站,在那里我管理着少量客户。我创建了一个菜单页面,当用户注销时,它基本上只是告诉用户登录。但我想为用户登录并单击同一菜单页面时进行编码,我希望它重定向到我为他们创建的私人页面。每个人都已经有一个私人页面。每个私人页面的 URL 是“example.com/private-page/username/。如果个人的 URL 不存在,我只希望代码返回原始菜单页面而不是不存在的页面。


我尝试了不同的方法,包括使用 meta 将页面刷新到另一个 url。我无法弄清楚究竟是什么不起作用。我在 function.php 上输入代码


function userredirect(){

    $current_user = wp_get_current_user();

     if(is_user_logged_in() && is_page('Menu Page')){

         wp_redirect('https://example.com/private-page/'.$current_user->user_login.'/');

     }

}

除了显示页面的原始内容之外,当我转到菜单页面时什么也没有发生。目前我还没有想出任何关于如何在网页不存在的情况下阻止它重定向的线索。


智慧大石
浏览 158回答 2
2回答

杨__羊羊

重定向没有触发的原因是因为您必须在 wp_redirect 之后退出:见手抄本    function get_page_by_slug( $slug ) {        if( $pages = get_pages() )            foreach( $pages as $page )                if( $slug === $page->post_name ) return true;                return false;   }    function userredirect() {        global $post;        if( $post->ID == 999999 ){ /* change number on this line to the post ID you want to redirect from */            $current_user = wp_get_current_user();            $slug = $current_user->user_login;            if( is_user_logged_in() && is_page('Menu Page') ){                 if( get_page_by_slug($slug) ){                     wp_redirect('https://example.com/private-page/'.$slug.'/');                     exit;                }            }        }    }    add_action( 'init', 'userredirect' );

跃然一笑

is_page('Menu Page') 只有当用户点击该页面时才会给出 true 作为结果。所以如果他在任何其他页面 wp_redirect 函数就不会启动。同样,您可以使用功能包装您的链接:if get_page_by_path($current_user->user_login) {#your_link_here}所以你的链接只有在页面存在时才可见
打开App,查看更多内容
随时随地看视频慕课网APP