为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
智慧大石 2021-11-19 15:26:15
我正在建立一个新网站,在那里我管理着少量客户。我创建了一个菜单页面,当用户注销时,它基本上只是告诉用户登录。但我想为用户登录并单击同一菜单页面时进行编码,我希望它重定向到我为他们创建的私人页面。每个人都已经有一个私人页面。每个私人页面的 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.'/');     }}除了显示页面的原始内容之外,当我转到菜单页面时什么也没有发生。目前我还没有想出任何关于如何在网页不存在的情况下阻止它重定向的线索。
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

重定向没有触发的原因是因为您必须在 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' );


查看完整回答
反对 回复 2021-11-19
?
跃然一笑

TA贡献1826条经验 获得超6个赞

is_page('Menu Page') 只有当用户点击该页面时才会给出 true 作为结果。所以如果他在任何其他页面 wp_redirect 函数就不会启动。同样,您可以使用功能包装您的链接:


if get_page_by_path($current_user->user_login) {

#your_link_here

}

所以你的链接只有在页面存在时才可见


查看完整回答
反对 回复 2021-11-19
  • 2 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信