wake-up-neo.net

Yoast SEO Das Aufrufen von Inhalten filtert 2 zusätzliche Male

Ich habe versucht, einen Inhaltsfilter hinzuzufügen, und festgestellt, dass der Filter insgesamt dreimal aufgerufen wurde. Ich habe versucht, alle Plugins langsam zu löschen und schließlich festgestellt, dass Yoast dies verursacht hat. Das ist absolut verrückt. Dies bedeutet, dass ein einzelner Inhaltsfilter jedes Mal dreimal aufgerufen wird. Die Leistungsprobleme alleine sind ernsthaft schlecht. Irgendeine Idee, was dies verursacht. Sicherlich würde dieses Plugin nicht veröffentlicht, wenn es den Inhalt zweimal aufrufen würde.

Zum Beispiel. Dieser Haken zeigt einen im Inhalt an (ohne dass das Plugin installiert ist) und noch zweimal oben auf der Seite, wenn Yoast SEO installiert ist.

add_action( 'the_content', 'outputsomething');
function outputsomething() 
{
    echo "test";
}
2
Dan Hastings

Der Kern Ihres Problems besteht darin, dass the_content ein Filter und keine Aktion ist und Werte zurückgeben und nicht wiedergeben soll.

Was den Teil der Frage "angerufene Anzahl" betrifft, so kann jeder Haken unbegrenzt oft angerufen werden. Wenn Sie feststellen, dass Sie beim ersten Aufruf ein Ergebnis und bei den anderen ein anderes Ergebnis zurückgeben müssen, ist dies ein Zeichen dafür, dass Sie etwas Falsches oder extrem Hackiges tun.

2
Mark Kaplun

Ich bin mir nicht sicher, was deine Frage genau ist, aber ja - für jede apply_filters( 'the_content', '...' ); werden alle Hook-Filter ausgeführt. Es ist mir egal, wie oft dies passiert, sondern welcher Inhalt jedes Mal gefiltert wird - je größer der Inhalt, desto schlechter die Leistung.

1
Zlatev

Ich fürchte, ich kann dieses Problem nicht reproduzieren. Ausführen von WP 4.6.1 und Yoast 3.7.1. Ich habe der Funktionsdatei meiner Testinstallation Folgendes hinzugefügt:

add_action( 'the_content', 'wpse224783_action');
function wpse224783_action() 
    { echo "test123"; }

add_filter( 'the_content', 'wpse224783_filter');
function wpse224783_filter($content) 
    { echo "test456" ; return $content . "test789" }

Dies führt dazu, dass alle meine Inhalte test123test456test789 ausgeben. Mein Fazit ist also, dass dieses Verhalten nicht nur durch die Kombination aus einer neuen WP -Installation und Yoast ausgelöst wird. Ich habe ein Profiling-Plugin verwendet, das angibt, dass die Funktionen bei jedem Aufruf von the_content nur einmal ausgeführt werden. An einer anderen Stelle, möglicherweise in Ihrem Thema, wird the_content mehrmals ausgelöst.

0
cjbj