Heim > CMS-Tutorial > WordDrücken Sie > So vermeiden Sie eine Endlosschleife, wenn WordPress Hooks für die Theme-Entwicklung verwendet

So vermeiden Sie eine Endlosschleife, wenn WordPress Hooks für die Theme-Entwicklung verwendet

藏色散人
Freigeben: 2021-04-30 10:07:15
nach vorne
1997 Leute haben es durchsucht

In der folgenden Tutorial-Kolumne von WordPress erfahren Sie, wie Sie eine Endlosschleife vermeiden, wenn WordPress Hooks für die Theme-Entwicklung verwendet. Ich hoffe, dass es für Freunde in Not hilfreich ist!

So vermeiden Sie eine Endlosschleife, wenn WordPress Hooks für die Theme-Entwicklung verwendet

Bei der Entwicklung von WordPress verwenden wir häufig Hooks wie save_post oder create_post_tag, um beim Aktualisieren von Artikeln oder Kategorien zusätzliche Daten hinzuzufügen. Diese Hooks lösen das Timing aus Wenn es nicht richtig gehandhabt wird, kommt es zu einer Endlosschleife, was zu einer Endlosschleife beim Aktualisieren der Daten führt.

Beim Speichern eines Artikels müssen wir eine Funktion an den Hook „save_post“ hängen. Der Zweck dieser Funktion besteht darin, den Artikeltitel zu ändern und den Namen des Autors vor dem Artikeltitel hinzuzufügen Aufruf der Funktion wp_update_post. Der Beispielcode lautet wie folgt.

add_action('save_post', 'wprs_update_post');
function wprs_update_post($post_id)
{
    $title = get_the_title($post_id);
    $title = "一刀:" . $title;

    $args = [
        'ID'         => $post_id,
        'post_title' => $title,
    ];
    
    wp_update_post($args);
}
Nach dem Login kopieren

Im obigen Code tritt der Hook „save_post“ während des Aufrufvorgangs der Funktion „wp_update_post“ auf. Über den Hook „save_post“ rufen wir die Funktion „wp_update_post“ auf. Infolgedessen lief das Programm unermüdlich weiter.

Erfahrene Programmierer können dieses Problem leicht entdecken, aber der Computer weiß nicht, dass es sich um eine Endlosschleife handelt. Wir können dem Computer keine Vorwürfe machen, schließlich ist er nur eine hirnlose Maschine. Was wir tun können, ist, während des Entwicklungsprozesses so vorsichtig wie möglich zu sein, um das Auftreten von Endlosschleifen zu vermeiden.

Also, wie löst man diese Endlosschleife in WordPress? Tatsächlich ist die Methode sehr einfach.

So vermeiden Sie die Endlosschleife in WordPress

Es ist immer noch der obige Code. Mit einer geringfügigen Änderung können wir diese Endlosschleife perfekt vermeiden. Das Folgende ist der geänderte Code. Im Vergleich zum obigen Endlosschleifencode haben wir nur zwei Zeilen hinzugefügt.

add_action('save_post', 'wprs_update_post');
function wprs_update_post($post_id)
{
   // 获取文章标题并在文章标题前面加上作者
    $title = get_the_title($post_id);
    $title = "一刀:" . $title;

    $args = [
        'ID'         => $post_id,
        'post_title' => $title,
    ];
    
    // 更新文章
    remove_action('save_post', 'wprs_update_post');
    wp_update_post($args);
    add_action('save_post', 'wprs_update_post');
}
Nach dem Login kopieren

Das Prinzip ist sehr einfach. Bevor wir die Funktion „wp_update_post“ ausführen, deinstallieren wir zunächst die Funktion, die am Hook „save_post“ hängt und eine Endlosschleife verursacht, sodass es nicht zu einer wiederholten Ausführung der Funktion „wprs_update_post“ kommt . Nach der Aktualisierung des Artikels werden wir diesen Hook zur späteren Verwendung bereitstellen.

Wenn Sie während der WordPress-Entwicklung auf ein Endlosschleifenproblem stoßen, möchten Sie möglicherweise auf den obigen Code verweisen und ihn ändern, damit die von uns benötigten Funktionen erreicht werden können, ohne ein Endlosschleifenproblem zu verursachen.

Das obige ist der detaillierte Inhalt vonSo vermeiden Sie eine Endlosschleife, wenn WordPress Hooks für die Theme-Entwicklung verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage