Optimierungsfunktion, die automatisch interne Links basierend auf der Post-Title-Zeichenfolge erstellt

Problem getriggers, danke @ SamuelElh für den Tipp, so dass ich es im Code wiederzugeben. Transient erweist sich als die richtige Lösung.

Ich habe eine function geschrieben, die Links zu vorhandenen Posttiteln hinzufügt, die in einem Post vorkommen. Wenn Sie zum Beispiel einen Post zu einer Site mit dem Titel “Dies ist ein Titel” hinzufügen und dann die Phrase “Dies ist ein Titel” im Inhalt eines anderen Posts angezeigt wird, wird automatisch eine Verknüpfung mit dem vorherigen Post hergestellt, der diesen enthält Titel.

Meine function funktioniert gut (abgesehen von einer Sache, die ich später erklären werde):

function ji_title_auto_link($content){ if (is_single()) {//only auto link on post pages. global $post; global $wpdb; //retrieve all the post titles from the database,and this is where it goes nasty cause I have more than 50000 post! // UPDATE:Check for transient. If none, then execute $titledb if (false === ( $titledb = get_transient( 'titledb' ) )) { $titledb=$wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish'"); set_transient( 'titledb', $titledb, 12 * HOUR_IN_SECONDS ); } foreach ($titledb as $key) { $titles=$key->post_title;//foreach all the titles $link=get_permalink(); $replace=''.$titles.''; $titleself=get_the_title();//make sure it don't link itself $pos=strpos($content, $titles); if ($pos !== false) { $length=strlen($titles); if ($titles != $titleself) { $content=substr_replace($content, $replace, $pos, $length); } unset($key); } } //echo get_the_title(); return $content; }else{return $content;} } add_filter('the_content', 'ji_title_auto_link'); 

Das Problem mit dieser function ist, dass ich 50.000 plus Beiträge auf meiner Website habe. Stellen Sie sich vor, dass ich 50.000 Titel aus der database mit $wpdb->get_results . Das Ergebnis ist eine Katastrophe! Es verlangsamt sofort die Post-Seite.

Meine Frage ist, wie kann ich diese function umschreiben, um einige databaselasten zu sparen oder gibt es noch andere Möglichkeiten, dies zu erreichen?

Solutions Collecting From Web of "Optimierungsfunktion, die automatisch interne Links basierend auf der Post-Title-Zeichenfolge erstellt"

  1. Verwenden Sie ein Cache-Plugin (oder schreiben Sie Ihr eigenes benutzerdefiniertes Cache-Plugin), um diese Beiträge zu verwalten.
  2. Stellen Sie das Cache-Plugin so ein, dass der Inhalt von Beiträgen aktualisiert wird, wenn ein anderer Beitragstitel aktualisiert / hinzugefügt wird. Oder Sie können dies in einem Hintergrundprozess mit Cron tun.

Auf diese Weise bleibt Ihr ursprünglicher Inhalt intakt, aber Sie erhalten trotzdem eine schnelle Antwort vom Server.