Como usar meu próprio valor de sessão personalizado no Wordpress?

14

Como posso usar meu próprio valor de sessão (personalizado) no Wordpress?
Por exemplo: $_SESSION['myname']="4lvin"

Eu já inseri session_start() em toda a página que eu preciso da seguinte forma.

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

Mas não funciona de maneira global.
Apenas trabalhando na página do self.
NÃO é chamado globalmente de outras páginas (usando a mesma lógica).

    
por 夏期劇場 01.11.2011 / 20:25

3 respostas

12

EDIT: "O PLUGIN ABAIXO NÃO ESTÁ DISPONÍVEL, POR FAVOR, UTILIZE ESSE PLUGIN EM VEZ: Plugin de Sessão do WordPress "

Existe um bom Plugin WordPress adaptado da classe Session do CodeIgniter: WP Sessions Plugin .

Ao ativar o plug-in, você pode começar a usar o objeto $session de qualquer lugar no seu tema ( $session object, enquanto global). Por exemplo, para usar o objeto $ session no arquivo header.php , basta adicionar este código:

global $session;
  

Se você é um desenvolvedor de plugins e quer adaptar este plugin com o seu, também pode encontrar versão autônoma no pacote. A documentação do plug-in fornece mais informações para os desenvolvedores de plug-ins sobre como se adaptar ao seu projeto.

Aqui estão algumas funções úteis para desenvolvedores de temas e plug-ins.

Você pode adicionar dados da sessão assim:

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

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

$session->set_userdata( $array );

Para recuperar dados da sessão:

$session->userdata( 'username' );

Para obter todos os dados da sessão :

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

Para remover um item da sessão:

$session->unset_userdata( 'username' );

Para remover mais itens da sessão:

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

Você também pode usar Flashdata , que são dados da sessão que estarão disponíveis somente para a próxima solicitação do servidor, e serão automaticamente limpos. Eles podem ser muito úteis quando você os usa para informativos ou mensagens de status (por exemplo, “Produto foi excluído”).

// 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' );

Para destruir a sessão:

$session->sess_destroy();

O plug-in também suporta códigos de acesso . Você pode imprimir todos os dados da sessão em suas postagens ou páginas:

[session key="username"]

Para alcançar a segunda chave:

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

Espero que isso ajude alguém.

    
por dino 15.11.2012 / 19:58
6

O WordPress não usa sessões, é por isso que suas variáveis de sessão não estão funcionando.

Na verdade, se certas variáveis forem definidas, WordPress destruirá $_SESSION para manter-se sem estado .

Mas se você realmente quiser usar as sessões, tente adicionar session_start() no início do seu arquivo wp-config.php . Isso (esperançosamente) iniciará as sessões sempre que o WP for iniciado, para que você possa definir e ler suas $_SESSION variáveis em qualquer outra parte do sistema.

    
por EAMann 01.11.2011 / 22:29
-5

O Wordpress suporta-o .

Você precisa adicionar as seguintes linhas na parte superior de functions.php

if ( ! session_id() ) {
    session_start();
}
    
por Alvin 02.11.2011 / 07:53

Tags