2014-01-08 62 views
0

情况: 我正在构建一个Wordpress网站。向下滚动页面时,菜单变为“固定”在页面的顶部(http://deerfielddesigns.com.mlseo.net/)。当我登录WordPress后,仪表板管理栏将覆盖菜单。我想在登录时为菜单创建不同的类,而不是在注销时。如何在JavaScript中使用php函数?

代码:

if (direction === 'down') { 

     $('#main-header').addClass('et-fixed-header'); 
    } else { 
     $('#main-header').removeClass('et-fixed-header'); 
    } 

我想插入一个“如果(is_user_logged_in())”语句在那里更改类输出,但我真的不明白太多的JavaScript,如果它发挥不错与PHP。有没有人有任何见解,我需要做什么来做到这一点?谢谢大家!

+0

你不能从Javascript调用PHP函数。你需要一个AJAX调用PHP脚本来做到这一点。 – 2014-01-08 01:07:42

+1

他并不是真的想要调用PHP函数,他只是很少提出这个问题。他想要的是在用户登录时使用jQuery来操作类(请参阅他的代码)。 – Daew

回答

1

如果这不是一个AJAX驱动的登录系统,只需打开你的header.php文件,并执行以下

$the_class = is_user_logged_in() ? 'logged-in-class' : 'logged-out-class'; 

然后找到你的main-header和待办事项需要什么。

<header id="main-header" class="<?php echo $the_class;"> 

如果它是一个Ajax驱动的登录系统,你需要了解如何与WordPress的add_action工作,但这是一个完全不同的问题的答案。

0

根据需要向所需的php函数发出ajax请求。你可以使用jQuery,YUI等各种JS库的ajax特性来实现。

+0

这通常是真实的,但是如果你阅读他的问题,你会看到他试图告诉用户是否在滚动事件中登录。每次用户滚动发送Ajax请求都是一个坏主意...... –

+0

同意;但为什么要实际检查用户是否在滚动事件内登录?这是疯了吧? – 2014-01-08 01:21:30

0

PHP是一种服务器端语言(很可能会生成Javascript)。 Javascript在浏览器中。

简短的回答是“你不能轻易从JS调用PHP”。

0

如果用户登录,从中识别javascript的简单方法是使用它们的状态填充JavaScript变量。在主题的header.php文件,添加:

<script type="text/javascript"> 
    var is_logged_in = <?php echo json_encode(is_user_logged_in()) ?>; 
</script> 

然后,在你的JavaScript的其他地方,你可以使用:

if (is_logged_in) { 
    //.... 
} 
+0

我试过这个,但由于某种原因,如果用户没有登录,我的'其他'语句不工作,当我想添加一个类。可能是我的一些错误,但我使用Ohgodwhy的解决方案工作。谢谢你的帮助! – mcheah

0

如果你在你的PHP文件写入内嵌的JavaScript,你可以这样做:

<?php // some php code ?> 

<script type="text/javascript"> 

<?php if (is_user_logged_in()) { ?> 
    // Place some javascript here 
<?php } else { ?> 
    // Place some javascript here 
<?php ?> 

</script> 

<?php // some php code ?>