Làm thế nào để lưu trữ và nhận các biến trong phiên WP?


28

Tôi có một biểu mẫu với một số hộp kiểm và hộp chọn hộp đầu vào và nó hiển thị những gì người dùng muốn thông qua một cuộc gọi ajax. Vấn đề là khi người dùng nhấp vào mục và trang chi tiết được hiển thị và sau đó quyết định quay lại trang trước, anh ta cần nhấp và chọn lại lựa chọn trước đó.

Tôi muốn làm cho WP lưu trữ tất cả các tùy chọn trong phiên khi nhấp vào nút chi tiết và lưu thông tin thực tế trong phiên và sau đó khi anh ta truy cập lại trang, các giá trị sẽ được kiểm tra trong phiên và đặt nếu có tìm.

Điều đó có thể được thực hiện trong WP?

Nếu có, làm thế nào?

Hãy đơn giản hóa điều đó và nói rằng chúng ta có một cái gì đó như thế này trong hình thức của chúng ta:

<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" />

Tôi không sử dụng nút gửi trong biểu mẫu của mình, nó được xử lý thông qua AJAX khi thay đổi đầu vào.

Và trong kết quả của tôi nhận được thông qua ajax tôi có một liên kết đến trang chi tiết:

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

Bất kỳ ý tưởng nào làm cách nào tôi có thể lưu trữ các giá trị của mình trong Phiên và gọi chúng khi xem lại / tải lại nút / quay lại trong trình duyệt?

Tôi cần có khả năng đọc phiên lưu trữ nội dung và sử dụng thông qua? Javascript? và kích hoạt tính năng tìm kiếm của tôi thông qua ajax đã hoạt động tốt.

Tôi chỉ cần lưu trữ (có thể trước khi đi tới $ link in href của nút chi tiết và đọc và gửi các biến phiên (nếu chúng tồn tại).


Nếu câu trả lời là hữu ích cho bạn, sau đó xem xét chấp nhận nó. Xem » Tôi nên làm gì khi ai đó trả lời câu hỏi của tôi? «Và / hoặc» Tại sao bỏ phiếu quan trọng? «, Thông tin thêm về mô hình Phát triển WordPress có sẵn tại trung tâm trợ giúp .
Nicolai

Tôi nghĩ rằng liên kết dưới đây sẽ giúp bạn. wordpress.stackexchange.com/questions/105453/
Vivekanand Saraswati

Câu trả lời:


32

Các phiên không được bật trong wordpress theo mặc định, nếu bạn muốn kích hoạt các phiên php, hãy thêm phần này vào đầu functions.php:

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

Bây giờ bạn có thể sử dụng $_SESSION['your-var'] = 'your-value';để đặt một biến phiên. Hãy xem tài liệu PHP về các phiên .



Cập nhật:

Có một câu trả lời thứ hai, trong suy nghĩ của tôi cũng có một giá trị - không may là nó đã bị xóa, tôi đang thêm lại thông tin ở đây. Câu trả lời đã đề cập đến Trình quản lý phiên WP một plugin được viết bởi @eamann như một giải pháp thay thế.
Tôi đã đọc một số điều về plugin, nhưng chưa bao giờ sử dụng nó bởi vì - cho đến nay - tôi vẫn gắn bó với các phiên PHP - chưa bao giờ gặp phải vấn đề mà tôi không thể sử dụng chúng. Đây là một tuyên bố / nhận xét của chính tác giả plugin tôi đã tìm thấy về một số lợi thế có thể.


Tôi có thể yêu cầu bạn xem qua một câu hỏi liên quan đến lĩnh vực tùy chỉnh ở đây: wordpress.stackexchange.com/questions/265852/ không?
Istiaque Ahmed

1

thêm cái này vào trong hàm.php của bạn

<?php

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

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

1

Tôi sẽ giải thích cách thiết lập phiên tên người dùng với plugin Phiên bản PHP cho WordPress . Bạn có thể áp dụng logic này cho vấn đề của bạn.

Thêm phần này vào tập tin tests.php của bạn

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

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

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

  }

$ _POST ['log'] đang tham chiếu hộp nhập tên người dùng từ biểu mẫu đăng nhập wordpress. Khi người dùng đăng nhập, tên người dùng được lưu trữ thành $ _SESSION ['username']. Trong trường hợp của bạn, bạn sẽ thay đổi 'log' thành tên biến mẫu mà bạn có 'car_color'.

Tham chiếu tên người dùng sau trong một số tệp php khác bằng

$username=$_SESSION['username'];

0

Có lẽ không có phiên thông thường nào trong Wordpress ... dù sao đi nữa, Wordpress biết khái niệm người dùng. Bạn có thể quản lý thông tin liên quan đến người dùng cụ thể với các chức năng add_user_meta, update_user_meta, get_user_meta, và delete_user_meta.

Nếu bạn cần thông tin được lưu theo cách này trong JavaScript, bạn có thể viết một đoạn script PHP nhỏ để nôn những gì bạn cần và gọi nó bằng Ajax.


2
Điều này chỉ tốt nếu người dùng đăng nhập.
Tim Hallman

0

Trên trang PHP nhận được yêu cầu AJAX, hãy đặt $ _SESSION như thế này.

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

Truy cập biến $ _SESSION

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

Hướng dẫn này đi sâu vào chi tiết hơn về thiết lập và xử lý các phiên.

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.