Làm cách nào để sử dụng giá trị phiên tùy chỉnh của riêng tôi trong Wordpress?


17

Làm cách nào tôi có thể sử dụng giá trị phiên (tùy chỉnh) của riêng mình trong Wordpress?
Ví dụ:$_SESSION['myname']="4lvin"

Tôi đã chèn session_start()vào tất cả các trang tôi cần như sau.

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

Nhưng không làm việc toàn cầu.
Chỉ cần làm việc trên trang tự.
Nó KHÔNG thể gọi được trên toàn cầu từ các trang khác (sử dụng cùng logic).


Bạn có thể vui lòng làm rõ bản chất cụ thể của WordPress cho câu hỏi của bạn không?
Chip Bennett

1
" Bản chất dành riêng cho WordPress là gì? " - điều đó có nghĩa là, câu hỏi của bạn liên quan đến WordPress theo cách nào?
Chip Bennett

1
Tôi thấy một câu hỏi về cookie phiên . Tôi không thấy bất cứ điều gì cụ thể đối với WordPress , đó là lý do tại sao tôi yêu cầu làm rõ.
Chip Bennett

2
Không. Phiêncookie là các chủ đề chung về trình duyệt web / web mà WordPress hoàn toàn không biết.
Chip Bennett

5
Đúng, phiên và cookie là chủ đề chung, nhưng đây là câu hỏi khiến phiên hoạt động với WordPress ... và vì bản thân WP không sử dụng phiên, nên nó có liên quan ở đây.
EAMann

Câu trả lời:


13

EDIT: "PLUGIN DƯỚI ĐÂY KHÔNG CÓ S ANN SÀNG NÀO, VUI LÒNG SỬ DỤNG RATNG PLUGIN INSTEAD: Plugin phiên WordPress "

Có một Plugin WordPress tốt được điều chỉnh từ lớp Phiên CodeIgniter: Plugin WP Sairs .

Khi bạn kích hoạt plugin, bạn có thể bắt đầu sử dụng $sessionđối tượng từ bất kỳ đâu trong chủ đề của mình ( $sessionđối tượng miễn là toàn cầu). Ví dụ, để sử dụng đối tượng $ session vào header.phptệp, chỉ cần thêm mã này:

global $session;

Nếu bạn là nhà phát triển plugin và bạn muốn điều chỉnh plugin này với plugin của mình, bạn cũng có thể tìm thấy phiên bản độc lập trong gói. Tài liệu về plugin cung cấp thêm thông tin cho các nhà phát triển plugin về cách thích ứng với dự án của bạn.

Dưới đây là một số chức năng hữu ích cho cả nhà phát triển chủ đề và plugin.

Bạn có thể thêm dữ liệu phiên như thế này:

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

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

$session->set_userdata( $array );

Để lấy dữ liệu phiên:

$session->userdata( 'username' );

Để có được tất cả dữ liệu phiên:

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

Để xóa một mục khỏi phiên:

$session->unset_userdata( 'username' );

Để xóa nhiều mục hơn khỏi phiên:

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

Bạn cũng có thể sử dụng Flashdata là dữ liệu phiên sẽ chỉ khả dụng cho yêu cầu máy chủ tiếp theo, sau đó sẽ tự động bị xóa. Chúng có thể rất hữu ích khi bạn sử dụng chúng cho các thông báo trạng thái hoặc thông tin (ví dụ: Sản phẩm đã bị xóa).

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

Để hủy phiên:

$session->sess_destroy();

Plugin cũng hỗ trợ shortcodes . Bạn có thể in bất kỳ dữ liệu phiên nào trên bài đăng hoặc trang của bạn:

[session key="username"]

Để đạt được khóa thứ hai:

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

Tôi hy vọng điều này sẽ giúp cho một ai đó.


1
Plugin WP Phiên không có ở đó! ??
Kiren Siva

1
Có, bạn sẽ muốn sử dụng cái đó: wordpress.org/plugins/wp-session-manager (Điều này tốt hơn và ổn định hơn nhiều).
beyt Swarovski


Tại sao chúng ta không thể sử dụng chức năng phiên mặc định của PHP trong WordPress? Giải pháp này tạo ra sự phụ thuộc vào một plugin.
Amrit

@Amritpal vì không phải tất cả các máy chủ PHP / Apache đều hỗ trợ phiên. Nếu bạn muốn xây dựng một phần mềm / plugin công cộng như WP, bạn phải nghĩ về nó. Nếu dự án cá nhân của nó nơi bạn có thể chỉnh sửa máy chủ, đó không phải là vấn đề.
beyt Swarovski

8

WordPress không sử dụng phiên, đó là lý do tại sao các biến phiên của bạn không hoạt động.

Như một vấn đề thực tế, nếu một số biến được xác định, WordPress sẽ thực sự phá hủy $_SESSIONđể giữ cho nó không trạng thái .

Nhưng nếu bạn thực sự muốn sử dụng phiên, hãy thử thêm session_start()vào đầu wp-config.phptệp của bạn . Điều này (hy vọng) sẽ bắt đầu các phiên bất cứ khi nào WP khởi động, do đó bạn sẽ có thể đặt và đọc các $_SESSIONbiến của mình ở nơi khác trong hệ thống.


Tôi thấy rằng Wordpress sử dụng Cookies để lưu trữ một số dữ liệu đăng nhập. Khi tôi in mảng $ _COOKIE, tôi có thể thấy một số dữ liệu. Tôi muốn đặt dữ liệu đó bằng tay. Thêm thông tin tại đây: stackoverflow.com/questions/21595900/ từ
shasi kanth 6/214

1
Ngoài ra, có nên sửa đổi tệp wp-config.php, để bắt đầu phiên không? Nếu chúng tôi cập nhật Wordpress sau, tệp wp-config.php có được cập nhật không?
shasi kanth

Hướng dẫn thảo luận về điều này nhiều hơn silvermapleweb.com/USE-the-php-session-in-wordpress
nu everest

1
@shasikanth không, wp-cofnig.phpkhông được chạm vào cập nhật.
T.Todua

1
@shasikanth wp-config.phpsẽ không được cập nhật, nếu không bạn có thể mất kết nối DB và các tham số khác bạn đã đặt thủ công.
Erenor Paz

-5

Wordpress không hỗ trợ nó .

Bạn cần thêm các dòng sau ở đầufunctions.php

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

10
Tại sao bạn sẽ bắt đầu phiên hai lần?
kaiser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.