Ajax trong một trang cài đặt (update_option không được xác định)


7

Tôi đang yêu cầu tệp php của plugin thông qua ajax và nó được cho là lưu một số dữ liệu với update_option (), nhưng php lại báo lỗi:

Call to undefined function update_option()

Tôi đoán rằng khi tôi gọi tệp php của mình bằng ajax WP không tải các chức năng của nó ... hoặc một cái gì đó?

Chúc mừng

Câu trả lời:


24

Đừng gửi AJAX đến tệp PHP của bạn trực tiếp. Thay vào đó, hãy sử dụng các hàm AJAX tích hợp của WordPress 1) . Bạn có thể đăng ký gọi lại AJAX từ plugin của mình và WordPress sẽ định tuyến các yêu cầu đến tệp plugin của bạn cho bạn.

Ví dụ: mã này sẽ đăng ký một cuộc gọi lại gọi là "wpa_49691":

add_action( 'wp_ajax_wpa_49691', 'wpa_49691_callback' );
add_action( 'wp_ajax_nopriv_wpa_49691', 'wpa_49691_callback' );
function wpa_49691_callback() {
    // Do whatever you need with update_option() here.
    // You have full access to the $_POST object.
}

Sau đó, bạn đăng bất kỳ dữ liệu nào bạn cần, chỉ cần xác định actiontrong đối tượng:

<script type="text/javascript">
    jQuery(document).ready(function($) {
        var data = {
            action: 'wpa_49691',
            my_var: 'my_data'
        };

        jQuery.post( ajaxurl, data, function(response) {
            // handle response from the AJAX request.
        });
    });
</script>

Kịch bản này sẽ đăng dữ liệu của bạn lên máy chủ. Trong cuộc gọi lại máy chủ, bạn sẽ thấy $_POST['my_var'] = 'my_data'.

Để đọc thêm, hãy xem:

1) Sử dụng wp_register_script( $handle );» wp_enqueue_script( $handle )» wp_localize_script( $handle );- cách cuối cùng để chuyển nội dung php vào js-var có thể truy cập bên trong tập lệnh AJAX của bạn.


5
Đây là cách để làm điều đó
MZAweb
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.