반응형
워드프레스 에이잭스 요청 핸들러에서 쿠키를 설정하려면 어떻게 해야 합니까?
wp ajax request handler에 cookie를 설정하려고 하는데 실패하였습니다.
누가 좀 도와줬으면 좋겠어요.
클라이언트측 코드는 다음과 같습니다.
var foo = $('#foo');
$.ajax({
url: 'http://127.0.0.1/wordpress/wp-admin/admin-ajax.php',
type: 'post',
dataType: 'json',
cache: 'false',
data: { 'action' : 'foo', 'foo' : foo.val(), 'nonce' : foo.data('nonce') },
success: function(data) { console.debug(data) },
error: function() { console.error('fail') }
});
플러그인은 다음과 같습니다.
function foo() {
check_ajax_referer( 'foo-my-nonce', 'nonce', 'what?!' );
if (isset($_POST['foo'])) {
$dir = pathinfo($_SERVER['REQUEST_URI']);
$dir['dirname'] = $dir['dirname'].'/';
setcookie('foo', $_POST['foo'], time()+62208000, $dir['dirname'], $_SE RVER['HTTP_HOST']);
$output = array('response' => 'success', 'message' => 'have fun');
}
else
$output = array('response' => 'failed', 'message' => 'you are a loser');
header("Content-type: application/json");
echo json_encode( $output );
exit;
}
add_action('wp_ajax_nopriv_foo','foo');
좋아, 얘들아 내가 고쳤어쿠키 경로를 현재 'post' 또는 'dirname' 대신 '/'(루트)로 설정해야 합니다.
대신:
setcookie('foo', $_POST['foo'], time()+62208000, $dir['dirname'], $_SERVER['HTTP_HOST']);
용도:
setcookie('foo', $_POST['foo'], time()+62208000, '/', $_SERVER['HTTP_HOST']);
언급URL : https://stackoverflow.com/questions/8357423/how-do-i-set-a-cookie-in-a-wordpress-ajax-request-handler
반응형
'programing' 카테고리의 다른 글
Oracle 데이터베이스에 존재하는 모든 역할을 나열하는 방법은 무엇입니까? (0) | 2023.03.05 |
---|---|
흐름(원어민 반응)에서 'this.state' 사용에 대한 오류가 표시됨 (0) | 2023.03.05 |
org.internate 를 선택합니다.휴지 상태예외:lob 스트림에 액세스할 수 없습니다. (0) | 2023.03.05 |
각도로 HTML 텍스트 이스케이프JS 지시어 (0) | 2023.03.05 |
스프링 부트부터 스태틱html을 사용하려면 어떻게 해야 하나요? (0) | 2023.03.05 |