Setzen Sie Transient auf CPT

Wenn ich Set_Transient-Code zu meiner cpt-Abfrage hinzufüge, erhalte ich einen Fatal error: Call to a member function have_posts() on string ... on line 30

Zeile 30 ist im Grunde: if($graduate_student_query->have_posts()) : ?>

Ohne set_transient funktioniert die Abfrage einwandfrei, aber es ist offensichtlich keine Best Practices. Wohin soll der set_transient gehen?

  'people', 'role' => 'leadership', 'meta_key' => 'ecpt_people_alpha', 'orderby' => 'meta_value', 'order' => 'ASC', 'posts_per_page' => '-1')); set_transient( 'graduate_student_query', $graduate_student_query, 2592000 ); } if($graduate_student_query->have_posts()) : ?> {some HTML code} have_posts()) : $graduate_student_query->the_post(); ?> 

Muss ich den set_transient außerhalb dieser Schleife am oberen Rand des Vorlagedokuments einrichten?

Solutions Collecting From Web of "Setzen Sie Transient auf CPT"

Wir geben eine vollständige Antwort, nachdem wir es herausgefunden haben.


Transienten können schwer zu beheben sein, da Sie, wenn Sie den falschen Wert zuerst in der database speichern, einen alten und einen ungültigen Wert anzeigen können, selbst wenn der Code, der Ihre Transiente festlegt, jetzt korrekt ist.

Die zwei Möglichkeiten, die Sie beheben können, sind, vorübergehend delete_transient() oder ein Plugin wie Transienten-Manager zu verwenden . Das Plugin hat den Vorteil, dass Sie auch den Wert von Transienten anzeigen können, was die Fehlersuche beschleunigen kann.

Im obigen Beispiel besteht der einfachste Weg darin, das Snippet wie folgt zu starten:

 < ?php delete_transient('graduate_student_query'); // this is the magic if ( false === ( $graduate_student_query = get_transient( 'graduate_student_query' ) ) ) { // etc... 

Das bedeutet, dass der alte Wert gelöscht wird, der vollständige Code ausgeführt wird, der Transient erneut gespeichert wird und Sie sehen, ob Sie jetzt den korrekten Wert verwendet haben.

delete_transient() sicher, dass Sie delete_transient() aus dem Code entfernen . Andernfalls löschen Sie es und regenerieren es jedes Mal und Ihr Code ist noch ineffizienter als zuvor!