Support » Allgemeine Fragen » Metadata zum Post hinzufügen geht nicht

  • 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 1 Woche, 3 Tage von runerahlke.
Ansicht von 6 Antworten - 1 bis 6 (von insgesamt 6)
  • 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 1 Woche, 3 Tage von runerahlke.
    • Diese Antwort wurde geändert vor 1 Woche, 3 Tage von runerahlke.
    Moderator Bego Mario Garde

    (@pixolin)

    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?

    Moderator Bego Mario Garde

    (@pixolin)

    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.

    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 1 Woche, 3 Tage von runerahlke.
    Moderator Bego Mario Garde

    (@pixolin)

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

    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)