Ajax auf einer Einstellungsseite (update_option ist undefiniert)

7

Ich mache eine Anfrage an die PHP-Datei meines Plugins über Ajax und es soll einige Daten mit update_option () speichern, aber PHP gibt einen Fehler aus:

Call to undefined function update_option()

Ich vermute, wenn ich meine PHP-Datei mit Ajax WP aufrufe, werden die Funktionen nicht geladen ... oder so?

Prost

Nikolay Dyankov
quelle

Antworten:

24

Senden Sie AJAX nicht direkt an Ihre PHP-Datei. Verwenden Sie stattdessen die in WordPress integrierten AJAX-Funktionen 1) . Sie können einen AJAX-Rückruf von Ihrem Plugin aus registrieren, und WordPress leitet Anforderungen für Sie an Ihre Plugin-Datei weiter.

Dieser Code registriert beispielsweise einen Rückruf mit dem Namen "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.
}

Anschließend veröffentlichen Sie die gewünschten Daten. Geben Sie einfach actionim Objekt Folgendes an:

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

Dieses Skript sendet Ihre Daten auf den Server. Im Server-Rückruf sehen Sie $_POST['my_var'] = 'my_data'.

Weitere Informationen finden Sie unter:

1) Verwenden Sie wp_register_script( $handle );» wp_enqueue_script( $handle )» wp_localize_script( $handle );- den letzten, um PHP-Inhalte in eine js-var zu verschieben, auf die Sie in Ihrem AJAX-Skript zugreifen können.

EAMann
quelle
5
Dies ist der Weg, um es zu tun
MZAweb