Wp_redirect 및 전송 변수


12

내 테마 폴더의 function.php 파일에서 wp_redirect ()로 변수를 보내는 방법은 무엇입니까?

if ( $post_id ) {
    $variable_to_send = '1';
    wp_redirect( home_url(), $variable_to_send );
    exit;
}

그리고 홈페이지에서 if-else 조건에서 변수를 포착하여 if $variable_to_send= '1'인지 여부에 따라 확인을 표시하거나 표시 하지 않습니다.

WordPress에서 어떻게합니까?

답변:


10

당신이 이런 식으로 할 수 없을 것 같아요.

wp_redirect헤더를 보내는 멋진 방법 이며이 Location함수의 두 번째 인수는 사용자 정의 변수가 아닌 요청 상태입니다. (404, 301, 302 등).

일부 변수를 get 매개 변수로 보낼 수 있습니다. 따라서 다음과 같이 할 수 있습니다.

if ( $post_id ) {
        $variable_to_send = '1';
        wp_redirect( home_url() .'?my_variable='.$variable_to_send );
        exit;
}

그런 다음이 변수를 사용 $_GET['my_variable']하거나 사용자 정의 get 변수로 등록 할 수 있습니다.


1
쿠키를 설정할 수도 있습니다.
벤 Polinsky

1
add_query_arg를 사용하여 WordPress 방식으로 수행해야합니다.
Shivanand Sharma

@ShivanandSharma 할 수 있지만 add_query_arg를 사용하여 다른 쿼리 인수없이 URL에 하나의 인수를 추가 할 필요는 없습니다.
Krzysiek Dróżdż

10

이 파티에 늦었지만 "Wordpress way"는 다음 add_query_arg과 같이 사용합니다 .

if ( $post_id ) {
    wp_redirect( esc_url( add_query_arg( 'variable_to_send', '1', home_url() ) ) );
    exit;
}

로 리디렉션됩니다 http://my.website/?variable_to_send=1. PHP 코드 home_url()로 액세스 하여 변수를 캡처 한 다음 홈페이지 (또는 설정 방법에 따라 블로그 페이지)에서 캡처 할 수 $_GET['variable_to_send']있습니다.

이에서 할 거라면 functions.php, 사이에 끼어 있는지 확인 init유사 초기 후크 또는 그렇지 않으면 당신은 "헤더 이미 보낸"오류가 발생합니다.

잘하면 이것은이 게시물을 우연히 발견하는 사람에게 도움이되기를 바랍니다.


7
로컬 주소로 리디렉션하는 경우을 사용해야합니다 wp_safe_redirect().
Nathan Johnson
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.