2010-12-21 5 views
1

양식이 포함 된 사용자 정의 페이지 서식 파일 (page-report.php)이 있습니다.양식 유효성 검사 및 제출 성공 후 Wordpress 리디렉션

나는 그것에 대한 검증을하기 때문에 같은 양식으로 연결될 수있는 행동이 필요하지만 성공적인 검증을 위해서는 다른 페이지로 리디렉션해야합니다.

wp_redirect()가 작동하지 않습니다. 왜냐하면 출력이 이미 시작된 후에 header() 함수가 출력되기 때문입니다.

경우 ($ _ POST의 [ '보고서']) {

if($validator->ValidateForm()) 
     { 
      wp_redirect('http://thankyou') // redirect 
     } 

은}

나는 (위한 ob_start 사용) 할 수없고 ob_flush() 헤더이 포함되어 있지 않기 때문에 페이지 템플릿.

내가 functions.php에서 기능 으려고 :

ADD_ACTION ('get_header', 'redirect_to'); 함수 redirect_to ($ page) { if ($ page) {
wp_redirect ('http://www.google.com'); }

}

하지만 그건 내가 만약 조건이없는 경우에만 작동합니다(). 출력을 시작한 후 wp_redirect()가 출력되고 있습니다.

이렇게하는 가장 좋은 방법은 무엇입니까?

답변

0

겠어요 ... 내가 관리자 페이지 내에서 모든 일 이후는, 헤더는이 질문에 설명 된대로 wp_redirect() 전에 해고되었다.

그래서 나는 상단에 새로운 기능을 결국 다음 redirect_to() 함수가 (admin_init에) 헤더 전에 해고 될 것이라고 확신하고있다

add_action('admin_init','redirect_to'); 
function redirect_to() 
{ 
     if (isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action']) { 
        wp_redirect($redirect); 
        die(); 
       } 
     } 

} 

. 어쩌면 가장 우아한 해결책은 아니지만 완벽하게 작동합니다. 그것이 작동하지 않습니다 -

wp_redirect($_SERVER['REQUEST_URI']); 
+0

'$ redirect '란 무엇입니까? 정의하지 않았다면 –

0

if($_POST['report']) { 

    if($validator->ValidateForm()) { 
     header('Location: http://thankyou') ; 
    } 
} 
+0

죄송합니다 : –

1

나는 당신이 save_post 후크 사용한다고 생각하십시오 :

do_action ('save_post', 'custom_add_save을');

또한 자신 만의 코드 대신 플러그인을 사용해보세요. Gravity Forms와 Contact form 7 모두 잘 작동합니다.

}

+0

'save_post'를 사용할 수 없지만 do_action()에 관해서는 당신이 맞습니다. 나는 이것을 사용할 것이다. –

0

그래서 경우에 누군가가 워드 프레스에서 "POST 후 재 지정"을 찾고, 이것은 당신이 그것을하는 방법이다. wp_redirect()가 header()도 사용하고 있습니다.문제는 header()가 페이지에 다른 것이 표시되기 전에 일어날 필요가 있다는 것이고, 이것이 실패한 이유입니다 ...
+0

폼 액션이'admin-post.php'라면 실패 할 것이다. –

관련 문제