当用户未登录时,工具栏按钮点击重定向按钮进行显示

时间:2017-09-25 作者:wpecko

在我的网站中,我有一个按钮(.x-btn.widgetbar),它在右上角显示一部分小部件,如下所示example.

我修改了图标以根据用户是否注册进行更改,我希望在用户未登录时重定向到登录页面,而不是显示widgetbar。

我是新手,我不知道从哪里开始,我在几个论坛上咨询过,我想我可以找到代码,但我不知道要编辑什么文件,我已经尝试了几个星期,但我不能为这个查询提前道歉。

我在函数中尝试此函数。php但不起作用。。

function wp_redirect_NotLogin ()
{
    if( isset($_POST[\'x-btn-widgetbar\']) && ! is_user_logged_in() ) {
        wp_redirect( home_url( \'/register/\' ) ); 
    exit(); 
    }
}

3 个回复
最合适的回答,由SO网友:IBRAHIM EZZAT 整理而成

当您需要客户端和服务器端之间的交互时,应该使用ajax。

我想这个Link 将对您非常有帮助:)将此内容放入您的javascript中

var data = {
    action: \'is_user_logged_in\'
};
jquery.(\'.x-btn-widgetbar\').on(\'click\',function(){
   jQuery.post(ajaxurl, data, function(response) {
      if(response == \'yes\') {
           // user is logged in, do your stuff here
       } else {
           // user is not logged in, show login form here
               window.location = <login url here >;

       }
   });
});
把这个放在你的函数中。php

function ajax_check_user_logged_in() {
    echo is_user_logged_in()?\'yes\':\'no\';
    die();
}
add_action(\'wp_ajax_is_user_logged_in\', \'ajax_check_user_logged_in\');
add_action(\'wp_ajax_nopriv_is_user_logged_in\', \'ajax_check_user_logged_in\');
更新#1 2017年9月26日

如果要隐藏widgetbar,可以使用以下jquery:

jquery(\'.x-widgetbar\').hide();

jquery(\'.x-widgetbar\').css({display:\'none\'});
或者simplay把这个放进去*。css文件:

.x-widgetbar{display:\'none\'}
更新#2 2017年9月26日

如果只想隐藏widgetbar而不隐藏x按钮,您可以将其替换。x-widgetbar by。x-widgetbar-内部

SO网友:Parthavi Patel

just checking the body for logged-in class

if( jQuery(\'body\').hasClass(\'logged-in\') ) {
// do something
} 
SO网友:wpecko

谢谢大家的帮助,易卜拉欣你太棒了!!

最后,我得到了我想要的工作,所以我关闭了帖子,如果有人能在某个时候利用它,我会留下对我有用的东西。

我尝试使用您在Javascript中提供的代码:

var data = {
    action: \'is_user_logged_in\'
};

jQuery(\'.x-btn-widgetbar\').on(\'click\', function() {       

  jQuery.post(ajaxurl, data, function(response) {
      if(response == \'yes\') {
           // user is logged in, do your stuff here

       } else {
           // user is not logged in, show login form here
           jQuery(\'.x-widgetbar\').hide();
           window.location.href=\'https://website.com/login\';
       }
  });

});
这就是函数。php:

function ajax_check_user_logged_in() {
    echo is_user_logged_in()?\'yes\':\'no\';
    die();
}
add_action(\'wp_ajax_is_user_logged_in\', \'ajax_check_user_logged_in\');
add_action(\'wp_ajax_nopriv_is_user_logged_in\', \'ajax_check_user_logged_in\');
这段代码正是我想要的,但我花了几秒钟的时间重定向并发送了一个我没有添加到代码中的警报,导致响应略有延迟。

我试过Samuel和Parthavi(非常感谢!)编写并将此代码放入Javascript中:

jQuery(\'.x-btn-widgetbar\').on(\'click\', function() {

  if(jQuery(\'body\').hasClass(\'logged-in\') ) {

  } else {
     jQuery(\'.x-widgetbar\').hide();
     window.location.href=\'https://website.com/login\';
  }

});
使用此代码,行为相同,工作正常,但响应速度更快,可以防止小的延迟。

如果您看到一些调试代码的方法,或者看到一些可以帮助我避免问题的东西,我会非常感激,因为我不是javascript方面的专家。

提前感谢您的帮助,我希望一切顺利。

结束

相关推荐

子主题中的css无法正常工作

我正在尝试让儿童主题发挥作用。起初它没有加载,因为它没有将其识别为子主题。现在它确实可以工作了,但当我激活它时,它会加载我页面的一个版本,似乎没有任何css或其他东西。那里只有文本和图像,但没有样式。是因为它没有完全使用父主题还是什么?我只是从Wordpress开始,如果我不是很清楚或使用了正确的术语,我很抱歉。提前谢谢。这是我的职能。php文件:<?php function my_theme_enqueue_styles() { $parent_style = ‘twen