Support » Allgemeine Fragen » Rest-API Post published und dennoch 404

  • Gelöst sebiev

    (@sebiev)


    Hallo,

    Ich schiebe über die Rest-API einen Beitrag hoch, setze ihn über die API auf Published und im Backend steht der Status ebenfalls auf „Veröffentlicht“.

    Wenn ich mir den Beitrag ansehen möchte, kommt jedoch eine 404 Warnung.

    Erst wenn ich den Post im Backend per Hand aktualisiere, wird der Beitrag veröffentlicht.

    Ist das ein normales Verhalten?
    Liegt das evtl daran, dass der Permalink noch nicht richtig verankert ist?

    Wie bekomme ich den Beitrag automatisch veröffentlicht?

    $data_string = json_encode([
                'title'             => $dataarray['h1'],
                'content'           => $content,
                'status'            => 'publish',
                'featured_media'    => $imageId,
                'slug'              => $generateSLug,
                'excerpt'           => ''
            ]);

    Besten Dank

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Ich vermute Du nutzt „pretty permalinks“, also die schön aussehenden SEO-URLs? Deren Cache müsste in dem Zusammenhang mit geleert werden.

    Versuch mal folgendes:
    Wenn Du einen neuen Betrag übermittelt hast, geh im Backend auf Einstellungen > Permalinks und speichere diese einfach neu ohne eine Einstellung zu ändern. Ist der Beitrag danach erreichbar?

    Wenn ja, dann liegt es genau an der fehlenden Permalink-Cache-Aktualisierung. Wieso das beim Neueintrag per API nicht passiert, müsste dann genauer untersucht werden.

    • Diese Antwort wurde geändert vor 1 Jahr, 8 Monaten von threadi.
    Thread-Starter sebiev

    (@sebiev)

    Hallo,
    Danke für deine Antwort.

    Nein, dies hatte ich schon getestet.

    Ich setze den Beitrag auf future und einem Delay von 10min. Der WordPressCron veröffentlicht den Beitrag jetzt ganz normal und es kommt zu keinem 404 Fehler.

    Noch interessanter ist die Thematik/Problematik bei eigenen Post Types. Da wird der Beitrag gar nicht veröffentlicht und es kommt immer zu einer „Verpasste Planung“ meldung.

    Steht unter Werkzeuge > Website-Zustand irgendeine Meldung die auf fehlende Ausführung von Cronjobs hinweist?

    Thread-Starter sebiev

    (@sebiev)

    Nein, der Cron läuft, da die „normalen“ geplanten Posts ordnungsgemäß Veröffentlicht werden.

    Es werden keine Probleme unter Websitezustand aufgeführt.

    Moderator Torsten Landsiedel

    (@zodiac1978)

    Thread-Starter sebiev

    (@sebiev)

    schlimm? Habs gelöscht.

    Thread-Starter sebiev

    (@sebiev)

    Ich habe eben festgestellt, dass ich über get_posts mit meinem post_type nichts zurückbekomme. Obwohl in der Datenbank unter posts im Feld Posttypes der richtige Type zu finden ist.

    add_action( 'wp_loaded', 'check_posttype');
    
    function check_posttype()
    {
        $args = array(
        'post_type'       => 'car-displays'
    );
    $my_posts = get_posts( $args );
    echo "<pre>";  var_dump($my_posts); echo "</pre>";
    }
    Moderator Torsten Landsiedel

    (@zodiac1978)

    schlimm? Habs gelöscht.

    Schlimm nicht, aber wenn du das machst, dann weise bitte darauf hin. Es ist immer sehr frustrierend, wenn jemand helfen möchte, sich Zeit nimmt und eine Lösung (oder den Weg dahin) erarbeitet und dann als Antwort kommt: Habe schon bei XY eine Antwort bekommen. Wenn du den Link selbst postest, dann kann dort geprüft werden, ob schon eine Lösung existiert. Dann verschwendet niemand seine Zeit.

    Zum Thema: Es wäre hilfreich, wenn du mal deine aktiven Plugins posten würdest, damit wir schauen können, ob es vielleicht andere Problemquellen geben könnte.

    Auch wäre ein vollständiger Code ggf. hilfreich.

    Gruß, Torsten

    Thread-Starter sebiev

    (@sebiev)

    Es gibt kein nennenswertes Plugin, welches stören könnte. Außer unser eigenes, welches ich hier nicht hochladen kann.

    Ich denke auch, dass das Übel da vergraben liegt. Jedoch versuche ich noch zu verstehen, wo das Problem liegen kann.

    Über die function.php registriere ich den Posttype für die Rest API

    function sb_add_cpts_to_api( $args, $post_type ) {  
        if ( 'car-displays' === $post_type ) {
            $args['show_in_rest'] = true;
        }
        return $args;
    }
    add_filter( 'register_post_type_args', 'sb_add_cpts_to_api', 10, 2 );

    Ausgabe

    $args = 
    ["public"]=>
      bool(true)
      ["rewrite"]=>
      array(1) {
        ["slug"]=>
        string(4) "cars"
      }
      ["show_in_menu"]=>
      string(15) "manager"
      ["menu_icon"]=>
      string(90) "icon2.png"
      ["supports"]=>
      array(4) {
        [0]=>
        string(5) "title"
        [1]=>
        string(6) "editor"
        [2]=>
        string(9) "thumbnail"
        [3]=>
        string(6) "author"
      }
      ["has_archive"]=>
      bool(true)
      ["show_in_rest"]=>
      bool(true)
      ["rest_base"]=>
      string(4) "cars"
      ["rest_controller_class"]=>
      string(24) "WP_REST_Terms_Controller"
      ["hierarchical"]=>
      bool(false)

    doch mit https://…/wp-json/wp/v2/car-displays findet er diesen Posttype nicht.

    {"code":"rest_no_route","message":"Es wurde keine Route gefunden, die mit der URL und der Request-Methode identisch ist.","data":{"status":404}}

    Auch ein Test auf den Posttype selber, wird nichts gefunden.

    add_action( 'wp_loaded', 'check_posttype');
    
    function check_posttype()
    {
        $args = array(
        'post_type'       => 'car-displays'
    );
        
    $my_posts = get_posts( $args );
    echo "<pre>";  var_dump($my_posts); echo "</pre>";
    
    }
    
    array(0) {
    }


    Moderationshinweis: Codeformatierung bereinigt. Der Beitrag war im Spam-Filter gelandet.

    • Diese Antwort wurde geändert vor 1 Jahr, 8 Monaten von sebiev.
    • Diese Antwort wurde geändert vor 1 Jahr, 8 Monaten von Bego Mario Garde.
    Moderator Michi91

    (@michi91)

    Poste mal den Code mit dem du deinen custom post type registrierst

    Thread-Starter sebiev

    (@sebiev)

    Habe über register_rest_route eine Route definiert und diese konnte ich ansprechen. Er setzt zwar den CustomPostType Beitrag auf publish, passt aber nicht den Permalink an.

    Lass die Sache jetzt über die function.php laufen, da wird die Permalinkstruktur aktualisiert.

    Danke!

    … und liebe Mitleser/-innen, bitte immer daran denken: die Datei heißt functions.php (Plural, mit „s“), sonst wird sie nicht erkannt. 😉

    Thread-Starter sebiev

    (@sebiev)

    Danke Bego, werde ich mir merken, und entschuldige wegen der gestrigen Mehrarbeit deinerseits! Hab es mir auf die Fahne geschrieben.

    Alles gut, hab’s nur erwähnt, weil es ein wirklich lästiger Fehler ist, den Dateinamen falsch zu schreiben. Da suchst du stundenlang, bevor dir der kleine Tippfehler auffällt.

    Bei der Moderation des Forums bringen wir immer viel Humor mit (ohne geht’s nicht). Der Humor bleibt aber oft auf der Strecke, weil selbst harmlose Scherze schnell missverstanden werden. Wer soweiso schon Stress mit seiner Website hat, missversteht lustig gemeinte Kommentare schon mal eher. Wie auch immer – der kleine Hinweis war mir Augenzwinkern gemeint. Zwinkersmiley.

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Das Thema „Rest-API Post published und dennoch 404“ ist für neue Antworten geschlossen.