wp_remote_get verwenden, um mit XML in WordPress zu arbeiten

Lesezeit: 2 Minuten

Ich vermute, dass ich etwas wirklich Grundlegendes und Offensichtliches übersehe, also entschuldige dich im Voraus!

Ich hatte benutzt simple_xml_load mit einer XML-Datei zu arbeiten, aber der Hosting-Provider meines Kunden blockiert das Laden externer Dateien über diese Methode. Ich versuche jetzt, meine Arbeit mit dem neu aufzubauen wp_remote_get Funktion in WordPress integriert.

Hier ist mein Code (Hinweis: Der Schlüssel und die Shelter-ID sind in diesem Beispiel generisch):

$url = "http://api.petfinder.com/shelter.getPets?key=1234&count=20&id=abcd&status=A&output=full";
$pf_xml = wp_remote_get( $url );
$xml = wp_remote_retrieve_body($pf_xml);

Damit kann ich ein Array aller Daten abrufen, die ich benötige, aber ich kann nicht herausfinden, wie ich auf bestimmte Daten abzielen kann. Hier ist die Ausgabe von print_r($xml):

<petfinder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://api.petfinder.com/schemas/0.9/petfinder.xsd">
    <header>
        <version>0.1</version>
        <timestamp>2013-03-09T15:03:46Z</timestamp>
        <status>
        <code>100</code>
        <message/>
        </status>
    </header>
    <lastOffset>5</lastOffset>
    <pets>
        <pet>
            <id>13019537</id>
            <name>Jordy</name>
            <animal>Dog</animal>
        </pet>
        <pet>
            <id>13019888</id>
            <name>Tom</name>
            <animal>Dog</animal>
        </pet>
    </pets>
</petfinder>

Wenn ich wollte echo den Statuscode, zum Beispiel, wie würde ich das machen? Mit simplexml würde ich schreiben $xml->header->status->code. Ich kann anscheinend nicht herausfinden, was die Codestruktur ist, um etwas Ähnliches mit Arrays zu tun wp_remote_get.

Danke im Voraus!

Ihr Code ruft bisher das XML als Zeichenfolge ab:

$url      = "http://api.petfinder.com/shelter.getPets?key=1234&count=20&id=abcd&status=A&output=full";
$response = wp_remote_get($url);
$body     = wp_remote_retrieve_body($response);

Um eine Zeichenfolge (anstelle einer URL) in eine zu laden SimpleXMLElement wie du es vorher mit gemacht hast simplexml_load_file (Sie haben den konkreten Code nicht gezeigt, also nehme ich an, dass Sie es basierend auf Ihrer Beschreibung so gemacht haben) Sie müssen jetzt die Zeichenfolge mit laden simplexml_load_string stattdessen:

$xml  = simplexml_load_string($body);
$code = $xml->header->status->code;

Ich habe Ihre Variablennamen leicht geändert (insbesondere mit der wp_remote_* Funktionen), um klarer zu machen, was diese Variablen tragen.

  • Das hat es getan! Vielen Dank!

    – Chris Ferdinandi

    11. März 2013 um 11:19 Uhr

1381070cookie-checkwp_remote_get verwenden, um mit XML in WordPress zu arbeiten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy