Verschulden mit transientem API – beim Refresh wird es gelöscht

Dem _s Thema folgend wollte ich meine eigene Version der Post Kategorien Liste mit Transient machen, und hier ist, was ich gemacht habe:

 function my_blog_categories() { global $post; if ( ( $get_post_categories = get_transient( 'this_blog_categories' ) === FALSE ) ) { $get_post_categories = get_the_category_list( ' | ', '', $post->ID ); set_transient( 'this_blog_categories', $get_post_categories ); } return $get_post_categories; } function my_blog_transient_flusher() { delete_transient( 'this_blog_categories' ); } add_action( 'edit_category', 'my_blog_transient_flusher' ); add_action( 'save_post', 'my_blog_transient_flusher' ); 

Mit WP Optimize, wenn ich die Transienten bereinige, kann ich bei der ersten Aktualisierung die Kategorien unterhalb des Posts sehen. Aber auf der zweiten Front-End-Seite-Aktualisierung verschwinden sie einfach.

Bitte nicht das, ohne die return $get_post_categories; es funktioniert einfach nicht. Aber was ich weiß, ist get_the_category_list() selbst gibt Daten zurück.

Also bin ich in einem ungeschickten Modus – kann nicht herausfinden, was ich falsch mache! Jede Hilfe würde sehr geschätzt werden.

Solutions Collecting From Web of "Verschulden mit transientem API – beim Refresh wird es gelöscht"

Das erste Problem besteht darin, dass Ihre Klammern in Ihrer IF-statement falsch sind.

if ( ( $get_post_categories = get_transient( 'this_blog_categories' ) === FALSE ) )

Sollte sein:

if ( ( $get_post_categories = get_transient( 'this_blog_categories' ) ) === false )

Sie möchten den Wert zuweisen und diesen Wert dann auf false testen. Aufgrund Ihrer falschen Klammern vergleichen Sie die Transiente mit false und weisen dann das Ergebnis dieses Vergleichs $ get_post_categories zu. Vergleiche haben höhere Priorität als Zuweisungen in PHP.

Das wird wahrscheinlich Ihr Problem beheben. Sie haben jedoch ein anderes Problem hier:

set_transient( 'this_blog_categories', $get_post_categories );

Transienten sollten Ablaufzeiten haben. Andernfalls läuft Ihre Transiente niemals ab und Sie werden die Daten nie aktualisieren.