• 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 5 Jahren, 3 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 vor 5 Jahren, 3 Monaten von runerahlke geändert.
    • Diese Antwort wurde vor 5 Jahren, 3 Monaten von runerahlke geändert.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    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)

    Moderator (nicht mehr aktiv)

    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 vor 5 Jahren, 3 Monaten von runerahlke geändert.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    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.