2014-09-11 1 views
1

다음 문제 : php에서 플러그인 페이지의 조건을 확인하고 false 인 경우 다른 페이지로 리디렉션하려고합니다.자바 스크립트를 사용하지 않고 Wordpress에서 n 초 후에 다른 페이지로 리디렉션하는 방법은 무엇입니까?

PHP로 단순히 다음과 같습니다

header('Refresh: 10; URL=http://yoursite.com/page.php'); 

10 초 후 리디렉션합니다. 그러나 Wordpress에서 "헤더가 이미 전송되었습니다"라는 오류가 발생합니다.

exit(wp_redirect(admin_url('admin.php?page=your_page'))); 

을하지만,이 기능에 대한 시간 매개 변수가 없습니다 :

그것의 워드 프레스 기능이 될 것입니다.

저는 자바 스크립트로 리디렉션하는 방법을 알고 있지만 php/wordpress 기능을 사용하고 싶습니다. 이것을 할 수있는 방법이 있습니까?

+2

메타 새로 고침? http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm – Reeno

답변

2
다음과 같은 메타 태그를 어떻게 든 문서의 <head> 부분을 수정하고 추가 할 수 있도록해야합니다

:

<meta http-equiv="refresh" content="10; URL=http://yoursite.com/page.php"> 

템플릿 구성 방법에 따라 달라집니다.

(안 템플릿을 사용하여) 워드 프레스의 머리 부분을 수정에 일반 솔루션은 wp_head 작업을 추가하는 것입니다 : 그 문제에 대한 쉬운 PHP 솔루션이없는 것,

<?php 

add_action('wp_head', 'some_function'); 
function some_function() { 
    if($someCondition) { ?> 
     <meta http-equiv="refresh" content="10; URL=http://yoursite.com/page.php"> <?php 
    } 
} 
+0

Ah ok. 고마워. 그러나 설정 페이지이며 일반 페이지 나 게시 사이트가 아니기 때문에 템플릿을 선택하거나 변경하는 것이 쉽지 않습니다. 내 코드가 시작될 때 get_header() 함수가 이미 실행되었습니다 ... – user2718671

+1

['wp_head'] (http://codex.wordpress.org/Plugin_API/Action_Reference/wp_head)에 대한 액션 추가를 고려하십시오. 헤더가 작성 중입니다. –

0

아니요 PHP가 헤더 (이 경우 전체 페이지)를 보내면 n 초 후 수행 할 방법이 없습니다.

틀린 옵션은 PHP가 잠자기 (5)를 사용하여 잠시 동안 렌더링을 유지하도록하는 것이지만 좋은 옵션은 아닙니다.

최상의 솔루션이

wp_redirect($page, $interval = 20) 

같은 추가 매개 변수를 함수 "wp_redirect"을 무시하고 설정 은 $ inverval 실패 할 수 있습니다이 기능을 사용 = 20, 그렇지 않으면 다른 스크립트를 설정해야합니다.

+0

Thx. 하지만 WP 핵심 기능을 무시하는 것이 좋은 생각인지 잘 모르겠습니다 ... – user2718671

0

PHP 코드가 서버 측이면 처리 된 다음 클라이언트로 전달됩니다.

쉬운 해결 방법 :

사용 특별한 헤더와 출력 일반 HTML 리디렉션 헤더

0

확인을 너무 자바 스크립트 솔루션을 만들었습니다. 리디렉션을 처리하는 가장 쉬운 방법 인 것 같습니다.

if($my_condition == false){ ?> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      var redirection_link=<?php echo json_encode(admin_url('admin.php?page=my_plugins_settings_page')); ?>;     
      alert('Please check your Settings first!'); 
      window.location.replace(redirection_link); 
     }); 
    </script> 
<?php 
} 
관련 문제