Ich konnte diese Nuss nicht knacken, aber ich werde das Gefühl nicht los, dass mir etwas Einfaches fehlt.
Ich entwickle ein WooCommerce-Plugin, das auf seiner Seite mit den Admin-Einstellungen eine Liste der Versandklassen bereitstellen soll. Der folgende Code, wie er in der Antwort einer anderen Frage vorgeschlagen wurde, zeigte an, dass Folgendes funktionieren sollte:
$shipping = new \WC_Shipping();
$shipping_classes = $shipping->get_shipping_classes();
var_dump($shipping_classes);
die();
Leider ist die Ausgabe ein leeres Array.
Ich verwende WordPress 4.9.5 und WooCommerce 3.3.5. Danke für jede Hilfe!
AKTUALISIEREN
Ich habe genau das gleiche Problem wie hier beschrieben: get_terms() gibt eine ungültige Taxonomie zurück und habe eine Problemumgehung bereitgestellt. Allerdings halte ich das nicht für eine Lösung.
Versuchen Sie, alle Versandklassen oder Versandmethoden zu erhalten? Haben Sie auch versucht, den Schrägstrich davor zu entfernen? WC_Shipping();?
– Fritten
15. April 2018 um 17:42 Uhr
LoicTheAztec
Um alle Versandklassen zu erhalten, benötigen Sie lediglich Folgendes:
Getestet und funktioniert. Dadurch erhalten Sie ein Array der WP_Term Objekte aller Versandklassen.
Bei Woocommerce sind die Versandklassen unter product_shipping_class benutzerdefinierte Taxonomie.
Oder Sie können diese benutzerdefinierte Funktion mit einer einfachen SQL-Abfrage verwenden:
function wc_get_shipping_classes(){
global $wpdb;
$return $wpdb->get_results( "
SELECT * FROM {$wpdb->prefix}terms as t
INNER JOIN {$wpdb->prefix}term_taxonomy as tt ON t.term_id = tt.term_id
WHERE tt.taxonomy LIKE 'product_shipping_class'
" );
}
Der Code wird in die function.php-Datei Ihres aktiven untergeordneten Designs (oder aktiven Designs) eingefügt.
VERWENDUNG (Testbeispiel):
$shipping_classes = wc_get_shipping_classes(); // Get Shipping Classes
echo '<pre>'; print_r($shipping_classes); echo '</pre>'; // Test raw output
Das funktioniert in meinem Fall nicht wirklich. Ich habe das versucht, und es gibt aus irgendeinem Grund nur eine einzige Versandklasse zurück, nicht alle. Ich habe in der ursprünglichen Frage einen Link zu einer anderen Frage hinzugefügt, die ich gefunden habe und die das genaue Problem genauer aufwirft. Ich habe dort auch einen Workaround bereitgestellt, aber ich denke nicht, dass das eine richtige Lösung war.
– mike.bronner
16. April 2018 um 16:25 Uhr
@mike.bronner Sehr seltsam, weil alle Versandklassen Begriffe aus der benutzerdefinierten Taxonomie „product_shipping_class“ in Woocommerce sind. So Ich habe meine Antwort aktualisiert und einen zweiten Weg hinzugefügt… Versuch es.
– LoicTheAztec
16. April 2018 um 16:46 Uhr
Danke für die Mühe. 🙂 Ich freue mich, die Ergebnisse durchzuschleifen get_terms() (ohne Argumente) und meine Ergebnisse herausfiltern. Ich bin mir ziemlich sicher, dass es irgendwo einen Fehler oder Konflikt gibt, der Chaos anrichtet. 😐
– mike.bronner
17. April 2018 um 0:09 Uhr
Vielleicht sucht noch jemand nach einer Lösung 🙂
$WC_Shipping = new WC_Shipping();
$shipping_classes = $WC_Shipping->get_shipping_classes();
var_dump($shipping_classes);
Versuchen Sie, alle Versandklassen oder Versandmethoden zu erhalten? Haben Sie auch versucht, den Schrägstrich davor zu entfernen?
WC_Shipping();
?– Fritten
15. April 2018 um 17:42 Uhr