• Moin,

    ich möchte per Funktion Beiträge für einen custom Posttype erstellen. Dabei gebe ich im Array den Titel, Content usw mit, das klappt. Wenn ich jedoch meta_input mitgeben will kommt eine Fehlermeldung. Mit „add_post_meta habe ich es auch probiert, jedoch funktioniert das auch nicht (= keine Einträge in der Datenbank)?

    Das ist mein Code aufgeteilt in den Anfang und unten das eigentliche, in dem der Post erstellt wird:

    foreach ($xml->search_ads->ad_ad as $car) {>ad_model_description['value'] . "</p>";
        $cardetails = $car->ad_vehicle;
    
        $data = array(
          'key' =>      $car['key'],
          'title' =>    $cardetails->ad_model_description['value'],
        );
    
        $abc_post = [
          'post_title'   => 'Titel',
          'post_content' => 'Content',
          'post_status'  => 'publish',
          'post_type'    => 'abc_cars',
          'meta_input'   => $data,
        ];
        wp_insert_post($abc_post);
    
      }

    Kurz: Wie kann ich eigene Metadaten aus einem Array $data mit speichern?

    • Dieses Thema wurde geändert vor 4 Jahren, 10 Monaten von runerahlke.
Ansicht von 6 Antworten – 1 bis 6 (von insgesamt 6)
  • Thread-Starter runerahlke

    (@runerahlke)

    Zusatz: Wenn ich bei ‚meta_input‘ ganz normal einen Array mit selbst geschriebenen Keys und Values als Strings eingebe, funktioniert es.

    Was ist falsch mit meinem Array $data?

    • Diese Antwort wurde geändert vor 4 Jahren, 10 Monaten von runerahlke.
    • Diese Antwort wurde geändert vor 4 Jahren, 10 Monaten von runerahlke.

    Lies dir nochmal die Referenz zu den Funktionen durch:

    wp_insert_post() fügt einen Beitrag ein und liefert eine ID zurück, die du dann als Argument für add_post_meta() verwenden kannst. add_post_meta($abc_post… scheint mir nicht so recht Sinn zu machen, zumal ja der Beitrag an der Stelle noch gar nicht existiert?

    Du hast jetzt nachträglich Änderungen im Code vorgenommen, ohne das weiter zu kommentieren. Dadurch passt meine Antwort auch nicht mehr ganz.

    add_post_meta( int $post_id, string $meta_key, mixed $meta_value, bool $unique = false )
    (https://developer.wordpress.org/reference/functions/add_post_meta/)

    als $post_id kannst du die ID verwenden, die dir wp_insert_post() zurückgibt. $meta_key und $meta_value ergeben sich aus den Daten, die du woanders (?) her hast. Da würde ich vorsichtshalber nochmal prüfen, welche Werte da übergeben werden.

    Thread-Starter runerahlke

    (@runerahlke)

    Ja das stimmt, das irritierte, deswegen habe ich das add_post_meta entfernt.

    Ich verstehe nur nicht wieso funktioniert es nicht eine Variable in dem Array zu haben?

    'meta_input'   => array(
            'key' =>      $car['key'],
          )

    Aber das geht:

    'meta_input'   => array(
            'key' =>      'test,
          )

    Das gibt doch beides nur einen Wert/String wieder oder nicht?

    • Diese Antwort wurde geändert vor 4 Jahren, 10 Monaten von runerahlke.

    Ich weiß nicht, was $car enthält – wie soll ich da deine Frage beantworten?
    Deshalb ja auch der Hinweis, „vorsichtshalber nochmal [zu] prüfen, welche Werte da übergeben werden.“

    Thread-Starter runerahlke

    (@runerahlke)

    Ok danke, ich werde erstmal rausfinden, ob $car = $data (Array) nicht doch mehrere Ebenen enthält. Für meta_input darf ein Array soweit ich weiß nur diese eine Ebene für Key und Value haben.

Ansicht von 6 Antworten – 1 bis 6 (von insgesamt 6)
  • Das Thema „Metadata zum Post hinzufügen geht nicht“ ist für neue Antworten geschlossen.