2016-06-28 13 views
1

Hia,Zugriff auf eine globale Variable im WordPress "System" von einem benutzerdefinierten Service?

sehr neu für Wordpress - so traurig, wenn es :-)

Insbesondere ist nicht viel Sinn macht dies über das WooCommerce Plugin.

Für alle Dateien, mit denen ich experimentiert habe - ich helfe einem Freund BTW - um ein paar raffinierte Shortcodes für ihn zu erstellen, konnte ich einfach auf den globalen $ woocommerce zugreifen.

Diese globale Variable hatte einige ordentliche Methoden, und ich konnte eine API dafür finden - also war alles in Ordnung.

Jetzt muss ich aus verschiedenen Gründen einen kleinen benutzerdefinierten Dienst erstellen, der nur das Versandland für den Kunden ändert.

Dies würde ich vorher der Lage sein, durch zu tun, wie dies zu tun - wenn ich es wollte schnell hart auf Bangladesh (ich glaube, es ist)

<?php 
    global $woocommerce; 
    $woocommerce->customer->set_shipping_country("BD"); 
?> 

Jetzt natürlich in meinem Set-kunden- country.php Servicedatei Ich bin nicht in der Lage zu Walzer rein und nutzen Sie diese Klasse gemacht global mit allen Warenkorb Inhalt etc ..

Also - meine Frage ist, wie bekomme ich Zugang zu diesem, kann ich dazu über eine Art Sitzungs-ID senden, die ich vom System verlangen kann, mir bitte etwas dafür zu geben, wenn ich freundlich nach der richtigen Funktion frage und eine gültige Sitzungs-ID zur Verfügung stelle?

Vielen Dank im Voraus, weiß ich zumindest zu helfen einige Versuche bekommen :-)

+1

Der globale '$ woocommerce' ist veraltet d zugunsten der Funktion 'WC()', die die einzelne Instanz der 'WooCommerce' Klasse zurückgibt. – helgatheviking

+0

Danke helgatheviking, gut zu wissen :-) – Splynx

Antwort

1

scheint Wordpress ein schönes AJAX Hakensystem verfügt.

Also muss ich meine Funktion erstellen, registrieren Sie es mit dem System, und in meinem Javascript kann ich die URL für diesen Aufruf über den URL-Zugriff „/wp-admin/admin-ajax.php“

function cool_foo_func() { 

     $response = array(
      "foo" => "func" 
     ); 

     wp_send_json($response); 
    } 
    add_action('wp_ajax_foo_func', 'cool_foo_func'); 
    add_action('wp_ajax_nopriv_foo_func', 'cool_foo_func'); 

und die ajax-Aufruf machen und nur mit dem Parameter action = „foo_func“ (oder erweitern Sie das Objekt oder was auch immer, oder wie Sie es tun)

So, jetzt rufen erinnern kann ich den Dienst an derselben Stelle schreiben, wo ich bin schreibe den shortcode, und mein Problem ist gelöst :-)

+1

Ja, tat auch dies in Code - war Fehler beim Posting zu beheben. Vielen Dank für den Hinweis, wird bearbeiten – Splynx