Wordpress에서 내 사용자 지정 세션 값을 사용하는 방법은 무엇입니까?


17

Wordpress에서 내 고유 (사용자 지정) 세션 값을 사용하려면 어떻게해야합니까?
예를 들면 다음과 같습니다.$_SESSION['myname']="4lvin"

session_start()다음과 같이 필요한 모든 페이지에 이미 삽입 했습니다.

<?php
session_start();
$_SESSION['myname'] = "4lvin";
?>

그러나 전 세계적으로 작동하지 않습니다.
자체 페이지에서 작업 중입니다.
다른 페이지에서 동일한 논리를 사용하여 전역 적으로 호출 할 수 없습니다.


질문 의 워드 프레스 관련 특성을 명확하게 설명해 주 시겠습니까?
칩 베넷

1
" WordPress 고유의 특성은 무엇입니까? "-귀하의 질문이 WordPress 와 어떤 관련이 있습니까?
칩 베넷

1
세션 쿠키 에 대한 질문이 있습니다. WordPress 에만 해당되는 내용이 없으므로 설명을 요청한 것입니다.
칩 베넷

2
아니요. 세션쿠키 는 WordPress가 전적으로 무관 한 일반적인 인터넷 / 웹 브라우저 주제입니다.
칩 베넷

5
예, 세션과 쿠키는 일반적인 주제이지만 WordPress에서 세션을 작동시키는 데 더 많은 문제가 있습니다. WP 자체는 세션을 사용하지 않으므로 여기에서 관련이 있습니다.
EAMann

답변:


13

편집 : "아래의 플러그인은 더 이상 사용할 수 없으므로 다음과 같은 플러그인을 사용하십시오 : WordPress 세션 플러그인 "

CodeIgniter Session 클래스에서 채택한 좋은 WordPress 플러그인이 있습니다 : WP Sessions Plugin .

플러그인을 활성화하면 $session테마의 어느 곳에서나 객체 를 사용할 수 있습니다 ( $session전역 인 경우 객체). 예를 들어 $ session 객체를 header.php파일 로 사용하려면 다음 코드를 추가하십시오.

global $session;

플러그인 개발자이고이 플러그인을 귀하의 플러그인에 적용하려는 경우 패키지에서 독립형 버전도 찾을 수 있습니다. 플러그인 문서는 플러그인 개발자에게 프로젝트에 적응하는 방법에 대한 자세한 정보를 제공합니다.

다음은 테마 및 플러그인 개발자 모두에게 유용한 기능입니다.

다음 과 같이 세션 데이터 를 추가 할 수 있습니다 .

// One value
$session->set_userdata( 'username', 'john' );

// Passing array
$array = array(
    'username' => 'john',
    'email'    => 'john@gmail.com'
);

$session->set_userdata( $array );

세션 데이터 를 검색 하려면

$session->userdata( 'username' );

모든 세션 데이터 를 얻으 려면

$session->all_userdata(); // returns array

세션에서 한 항목 을 제거 하려면

$session->unset_userdata( 'username' );

세션에서 더 많은 항목제거 하려면

$array = array(
    'username' => '',
    'email'    => ''
);
$session->unset_userdata( $array );

다음 서버 요청에만 사용할 수있는 세션 데이터 인 Flashdata 를 사용 하면 자동으로 지워집니다. 정보 또는 상태 메시지 (예 : "제품이 삭제되었습니다")에 사용할 때 매우 유용합니다 .

// Add Flashdata
$session->set_flashdata( 'item', 'value' );

// Retrieve Flashdata
$session->flashdata( 'item' );

// Preserving flashdata 
// (if you need to preserve flashdata through an additional request, 
// you can use this function):
$session->keep_flashdata( 'item' );

세션을 파괴하려면 :

$session->sess_destroy();

플러그인은 또한 단축 코드 를 지원합니다 . 게시물이나 페이지에 모든 세션 데이터를 인쇄 할 수 있습니다.

[session key="username"]

두 번째 키에 도달하려면

[session key="user_data" sec_key="display_name"]

이것이 누군가에게 도움이되기를 바랍니다.


1
WP 세션 플러그인이 없습니다! ??
Kiren Siva

1
예, wordpress.org/plugins/wp-session-manager 중 하나를 사용하고 싶을 것 입니다.
beytarovski


WordPress에서 PHP 기본 세션 기능을 사용할 수없는 이유는 무엇입니까? 이 솔루션은 플러그인에 대한 종속성을 만듭니다.
Amrit

모든 PHP / Apache 서버가 세션을 지원하는 것은 아니기 때문에 @Amritpal. WP와 같은 공개 소프트웨어 / 플러그인을 빌드하려면 그것에 대해 생각해야합니다. 서버를 편집 할 수있는 개인 프로젝트라면 문제가되지 않습니다.
beytarovski

8

WordPress는 세션을 사용하지 않으므로 세션 변수가 작동하지 않습니다.

실제로 특정 변수가 정의되면 WordPress는 실제로 $_SESSION상태를 유지하기 위해 파괴 됩니다 .

그러나 실제로 세션을 사용하려면 파일 session_start()시작 부분에 추가 wp-config.php하십시오. 이렇게하면 WP가 시작될 때마다 세션이 시작되므로 $_SESSION시스템의 다른 곳에서 변수 를 설정하고 읽을 수 있습니다.


Wordpress가 쿠키를 사용하여 일부 로그인 데이터를 저장하는 것을 보았습니다. $ _COOKIE 배열을 인쇄하면 일부 데이터가 표시됩니다. 해당 데이터를 수동으로 설정하고 싶습니다. 여기에 더 많은 정보 : stackoverflow.com/questions/21595900/...
shasi kanth

1
또한 wp-config.php 파일을 수정하여 세션을 시작하는 것이 좋습니다? 나중에 Wordpress를 업데이트하면 wp-config.php 파일도 업데이트됩니까?
shasi kanth


1
@shasikanth 아니오, wp-cofnig.php업데이트에 손대지 않았습니다 .
T.Todua

1
@shasikanth wp-config.php는 업데이트되지 않습니다. 그렇지 않으면 DB 연결 및 수동으로 설정 한 다른 매개 변수가 손실 될 수 있습니다.
Erenor Paz

-5

Wordpress가이를 지원합니다 .

상단에 다음 줄을 추가해야합니다.functions.php

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

10
왜 세션을 두 번 시작하겠습니까?
카이저
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.