Wie kann ich überprüfen, ob die aktuelle Seite wp-login.php
oder ist wp-signup.php
?
Gibt es elegantere Lösungen als die Verwendung $_SERVER['REQUEST_URI']
?
pages
login
registration
conditional-tags
ein Trickpony
quelle
quelle
Antworten:
Verwenden Sie das globale
$pagenow
, ein allgemeines globales Set, das von WordPress zur Laufzeit festgelegt wird:Sie können auch die Art der Anmeldeseite überprüfen , z. B. Registrierung:
Der folgende Code gilt als Legacy und sollte nicht verwendet werden (
wp-register.php
wurde vor einiger Zeit veraltet und anschließend entfernt):quelle
DER EINZIGE ZUVERLÄSSIGE WEG:
Code:
Warum ist es am sichersten?
1) Wenn Sie versuchen, die Anmeldeseite mit
REQUEST_URI
(oderSCRIPT_PATH
) zu überprüfen , erhalten Sie manchmal falsche Werte, da viele Plugins die Anmelde- und Administrations- URLs ändern.2)
$pagenow
gibt Ihnen in diesem Fall auch einen falschen Wert!Anmerkungen:
quelle
get_included_files()
die genaueste Lösung zu sein scheint (zumindest für mich).Eine modernere Möglichkeit, dies zu tun, sollte auch dann funktionieren, wenn die URL für die WP-Anmeldung durch Plugins geändert wird und sich WP in einem Unterordner befindet.
quelle
return false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] );
. Das fühlt sich für mich ein bisschen sauberer an.$GLOBALS['pagenow']
funktioniert nicht, benutze$_SERVER['PHP_SELF']
.und wenn dein wordpress nicht im web root ordner installiert ist, solltest du einige params verwenden
YOUR_WP_PATH/wp-login.php
, um die elemente im array zu ersetzen.quelle
Ich habe es mit der WordPress-eigenen wp_login_url () -Methode wie folgt implementiert:
Ein einfacher Vergleich beider Pfade (da es schwierig ist, sich über die Verwendung von SSL absolut sicher zu sein, da es möglicherweise beendet wird) sollte ausreichen ... Dies bedeutet jedoch, dass ein Plug-in- oder Designentwickler, der das Standardanmeldeformular ändert, dies getan haben muss Also der richtige Weg ...
quelle
Ich interessiere mich nur für die Registrierungsseite, nicht für die Anmeldeseite. Das wird vielleicht nicht von jedem gewünscht.
$ GLOBALS ['pagenow'] gibt index.php für mich zurück. Möglicherweise wegen buddypress oder meines Themas.
Also habe ich benutzt
Wenn Sie den Hauptteil der Registrierungsseite überprüfen, hat diese auch die ID. Wenn also die Seiten-ID-4906 angegeben ist , können Sie diese auf diese Weise verwenden, wenn sie besser funktioniert:
quelle
Keine der aktuellen Antworten hat für mich funktioniert.
Was ich getan habe, war zu überprüfen, ob das
$_GET
Array einen "Seiten" -Schlüssel hat und ob sein Wert "Anmelden" ist.quelle
Einige der hier vorgeschlagenen Lösungen haben funktioniert, daher habe ich etwas wirklich Einfaches mitgebracht, das auf einer normalen WordPress-Site funktioniert (nicht auf Multisite getestet).
So einfach wie:
Dabei wird der URL-Parameter berücksichtigt
?action=register
, der nur vorhanden ist, wenn Sie sich auf der Registrierungsseite befinden.quelle
Hier ist eine PSR-2-Version von @ T.Todua Antwort. Ich habe es nur schön formatiert. Dies ist besser, um die Funktion zu manipulieren, wie z. B. das Hinzufügen eines Filters zu Testzwecken usw.:
quelle