2014-01-08 3 views
0

상황 : 저는 Wordpress 사이트를 만들고 있습니다. 페이지를 아래로 스크롤 할 때 메뉴 상단이 '고정'됩니다 (http://deerfielddesigns.com.mlseo.net/). 내가 wordpress에 로그인 할 때, 대시 보드 관리 바는 메뉴를 덮는다. 내가 로그 아웃 할 때와 반대로 로그인 할 때 메뉴에 대한 다른 클래스를 만들고 싶었습니다.어떻게 자바 스크립트에서 PHP 함수를 사용합니까?

코드 : 그것은 좋은 재생하는 경우

if (direction === 'down') { 

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

나는 클래스 출력을 변경할 수 있습니다에서 "만약 (is_user_logged_in())"문을 삽입하고 싶어하지만 난 정말 자바 스크립트에 대해 너무 많은 것을 이해하지 않고, PHP로. 누구든지이 일을하기 위해 내가해야 할 일에 대해 통찰력을 가지고 있습니까? 모두에게 감사드립니다!

+0

자바 스크립트에서 PHP 함수를 호출 할 수 없습니다. PHP 스크립트를 호출하려면 AJAX 호출이 필요합니다. –

+1

그는 정말로 PHP 함수를 호출하고 싶지 않습니다. 그가 원하는 것은 사용자가 로그인 한 경우 jQuery를 사용하여 클래스를 조작하는 것입니다 (코드 참조). – Daew

답변

1

, 단순히 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;"> 

, 당신은 add_action '워드 프레스로 작업하는 방법을 이해해야합니다,하지만 그건 전혀 다른 질문에 대한 답변입니다.

0

필요할 때마다 필요한 PHP 함수에 대해 ajax 요청을하십시오. jQuery, YUI 등과 같은 다양한 JS 라이브러리의 ajax 기능을 사용하면됩니다.

+0

이것은 일반적으로 사실이지만 사용자가 질문을 읽으면 사용자가 스크롤 이벤트에 로그인했는지 여부를 알 수 있습니다. 사용자가 스크롤 할 때마다 아약스 요청을 보내는 것은 나쁜 생각이다 ... –

+0

동의; 하지만 사용자가 스크롤 이벤트 내에 로그인했는지 실제로 확인해야하는 이유는 무엇입니까? 그게 미친 짓이야? –

0

PHP는 서버 측 언어입니다 (자바 스크립트를 생성 할 가능성이 매우 높음). 자바 스크립트가 브라우저에 있습니다.

짧은 대답은 "JS에서 PHP를 쉽게 호출 할 수 없습니다"입니다. 이것이 AJAX 기반의 로그인 시스템이 아닌 경우

0

사용자가 로그인 한 상태에서 자바 스크립트를 식별하는 간단한 방법은 자바 스크립트 변수에 상태를 채우는 것입니다. 테마의 header.php에 추가 :

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

를 그런 다음, 자바 스크립트의 다른 곳에서, 당신은 사용할 수 있습니다

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

나는 이것을 시도했지만 어떤 이유로 사용자가 로그인하지 않은 경우 클래스를 추가하려고 할 때 'else'문이 작동하지 않습니다. 아마 내 오류가 발생했을 수 있지만 아마도 Ohgodwhy의 솔루션을 사용하여 작업하고 있습니다. 당신의 도움을 주셔서 감사합니다! – mcheah

0

당신은 당신이 할 수있는 PHP 파일에 인라인 자바 스크립트를 작성하는 경우 :

<?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 ?> 
관련 문제