Rest-API Post published und dennoch 404

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 2 Wochen, 3 Tage 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.

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>";
}

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 12 Stunden, 2 Minuten von sebiev.
  • Diese Antwort wurde geändert vor 11 Stunden, 42 Minuten von Bego Mario Garde.

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

 

This site will teach you how to build a WordPress website for beginners. We will cover everything from installing WordPress to adding pages, posts, and images to your site. You will learn how to customize your site with themes and plugins, as well as how to market your site online.

Buy WordPress Transfer