programing

플러그인 개발에서 워드프레스의 세션을 사용하는 방법

muds 2023. 3. 27. 21:42
반응형

플러그인 개발에서 워드프레스의 세션을 사용하는 방법

플러그인을 처음 써봅니다.테스트 플러그 인을 하고 있어요.php 파일과 ajax.filename 파일..

테스트 플러그인의 내 코드.php는

global $session;

print_r($abc); //$abc is array of my data ..

$session['arrayImg']=$abc; //saving data in session 

echo  $session['arrayImg']; //displayin "Array"

그리고 나의 ajax.php는 다음과 같은 코드로 구성되어 있다.

global $session;

$abc = $session['arrayImg'];

print_r ("abs== ".$abc); //displayin "abs== Array"

그리고 사용하는 경우session_start();

다음의 에러가 표시된다.

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 

플러그인의 한 파일에서 다른 파일로 데이터 배열을 보내고 싶을 뿐입니다.

플러그인 또는 테마에 다음 추가functions.php파일

function wpse16119876_init_session() {
    if ( ! session_id() ) {
        session_start();
    }
}
// Start session on init hook.
add_action( 'init', 'wpse16119876_init_session' );

다음으로 데이터를 추가하려면SESSION-

// If session has started, this data will be stored.
$_SESSION['arrayImg'] = $abc;

Ajax 후크 함수에 대한 데이터를 얻으려면 -

// handle the ajax request
function wpse16119876_handle_ajax_request() {
    if ( ! session_id() ) {
        session_start();
    }

    if ( array_key_exists( 'arrayImg', $_SESSION ) ) {
        $abc = $_SESSION['arrayImg'];
    } else {
        $abc = 'NOT IN SESSION DATA';
    }

    // Do something with $abc
}

내 경우 플러그인 활성화에서도 해당 세션 변수를 사용하고 있었습니다.비정통적인 행동도 했고요후크에서 session_start를 정의하는 대신 플러그인 :)의 첫 번째 행으로 만들었습니다.

플러그인은 워드프레스가 내 파일을 스캔하는 즉시 세션을 시작합니다.

사용자 로그아웃 시 세션을 파기하지 않습니다.변수 설정을 해제했을 뿐입니다.다른 플러그인에서도 세션을 사용하고 있는 경우에 대비하기 위해서입니다.세션을 파기하면 다른 플러그인에 영향을 줄 수 있습니다.

건배.

언급URL : https://stackoverflow.com/questions/16118817/how-to-use-session-in-wordpress-in-plugin-development

반응형