WP 세션에서 변수를 저장하고받는 방법?


28

확인란과 입력 상자 선택 상자가있는 양식이 있으며 사용자가 아약스 호출을 통해 원하는 것을 보여줍니다. 문제는 사용자가 항목을 클릭하면 세부 사항 페이지가 표시되고 이전 페이지로 돌아 가기로 결정하면 클릭하고 이전 선택을 다시 선택해야한다는 것입니다.

세부 정보 페이지의 버튼을 클릭하고 세션에 실제 정보를 저장 한 후 WP가 세션에 모든 옵션을 저장하도록하고 싶습니다. 그런 다음 페이지를 다시 방문하면 값이 세션에서 chcecked되고 녹이다.

WP에서 할 수 있습니까?

그렇다면 어떻게?

그것을 지나치게 단순화하고 다음과 같은 형태가 있다고 가정 해 봅시다.

<input class="car_color" type="checkbox" name="car_color" value="1" />
<input class="car_color" type="checkbox" name="car_color" value="2" />
<input class="car_color" type="checkbox" name="car_color" value="8" />
<input class="car_color" type="checkbox" name="car_color" value="4" />
<input class="car_color" type="checkbox" name="car_color" value="6" />

내 양식에 제출 버튼을 사용하지 않고 입력 변경시 AJAX를 통해 처리됩니다.

그리고 내 결과에서 아약스를 통해 세부 정보 페이지에 대한 링크가 있습니다.

<a class="detail-info-link" href="<?php echo $url ?>">

브라우저에서 값을 세션에 저장하고 다시 방문 / 다시로드 / 뒤로 버튼을 클릭하면 어떻게 호출 할 수 있습니까?

세션 저장 내용을 읽고? Javascript?를 통해 사용할 수 있어야합니다. 이미 잘 작동하는 ajax를 통해 검색 기능을 트리거하십시오.

방금 저장해야합니다 (아마도 세부 정보 버튼으로 href에 $ link로 이동하기 전에 세션 변수를 읽고 보내면됩니다).


답변이 도움이 되었으면 수락하십시오. » 누군가 내 질문에 대답 할 때 어떻게해야합니까? «및 / 또는» 투표가 중요한 이유는 무엇입니까? «, WordPress Development 모델 에 대한 자세한 내용은 도움말 센터를 참조하십시오 .
Nicolai

아래 링크가 도움이 될 것이라고 생각합니다. wordpress.stackexchange.com/questions/105453/...
Vivekanand 사라 스와 티

답변:


32

세션은 기본적으로 워드 프레스에서 활성화되어 있지 않습니다. PHP 세션을 활성화하려면 다음과 같이 시작 부분에 추가하십시오 functions.php:

if (!session_id()) {
    session_start();
}

이제 $_SESSION['your-var'] = 'your-value';세션 변수를 설정하는 데 사용할 수 있습니다 . 세션 에서 PHP 문서를 살펴보십시오 .



최신 정보:

내 마음에 두 번째 답변이 있었는데 불행히도 삭제되었습니다. 여기에 정보를 다시 추가하고 있습니다. 그 대답은 @eamann이 대체 솔루션으로 작성한 플러그인 인 WP Session Manager를 언급하고있었습니다 .
플러그인에 대해 몇 가지를 읽었지만 지금까지는 PHP 세션을 고수하고 있었기 때문에 사용할 수 없었던 문제가 없었기 때문에 사용하지 않았습니다. 이것은 플러그인 작성자가 작성한 몇 가지 장점에 대한 진술 / 의견 입니다.


여기에 사용자 정의 필드 관련 질문을 보 시겠습니까? : wordpress.stackexchange.com/questions/265852/…
Istiaque Ahmed

1

functions.php에 이것을 추가하십시오.

<?php

function tatwerat_startSession() {
    if(!session_id()) {
        session_start();
    }
}

add_action('init', 'tatwerat_startSession', 1);

1

WordPress 용 기본 PHP 세션 으로 사용자 이름 세션을 설정하는 방법을 설명합니다 플러그인 . 이 논리를 문제에 적용 할 수 있습니다.

functions.php 파일에 추가하십시오

if (!session_id()) {
    session_start();
}

  if ( isset( $_POST['wp-submit'] ) ){

    $_SESSION['username']=$_POST['log'];

  }

$ _POST [ 'log']는 워드 프레스 로그인 양식에서 사용자 이름 입력 상자를 참조합니다. 사용자가 로그인하면 사용자 이름은 $ _SESSION [ 'username']에 저장됩니다. 귀하의 경우 'log'를 'car_color'가있는 양식 변수 이름으로 변경하십시오.

나중에 다른 PHP 파일에서 사용자 이름을 참조하십시오.

$username=$_SESSION['username'];

0

어쩌면 Wordpress에는 일반적인 세션이 없을 수도 있습니다 ... 어쨌든 Wordpress는 사용자 개념을 알고 있습니다. 당신이 특정 사용자에 관한 정보를 관리 할 수있는 기능 add_user_meta, update_user_meta, get_user_meta, 및delete_user_meta .

JavaScript로 이러한 방식으로 저장된 정보가 필요한 경우 필요한 것을 구토하는 작은 PHP 스크립트를 작성하고 Ajax로 호출 할 수 있습니다.


2
사용자가 로그인 한 경우에만 좋다.
팀 Hallman

0

AJAX 요청을받는 PHP 페이지에서 $ _SESSION을 다음과 같이 설정하십시오.

$car_color = <user selected form input data>;
$_SESSION['car_color'] = $car_color;

$ _SESSION 변수에 액세스

if(isset($_SESSION['car_color'])) {
    $value = $_SESSION['car_color'];
} else {
    $value = 'Please select a car color.';
}

이 학습서 에서는 세션의 올바른 설정 및 폐기에 대해 자세히 설명합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.