Geçerli sayfa olup olmadığını nasıl kontrol edebilirim wp-login.php
ya wp-signup.php
?
Kullanmaktan daha zarif çözümler var $_SERVER['REQUEST_URI']
mı?
Geçerli sayfa olup olmadığını nasıl kontrol edebilirim wp-login.php
ya wp-signup.php
?
Kullanmaktan daha zarif çözümler var $_SERVER['REQUEST_URI']
mı?
Yanıtlar:
Çalışma $pagenow
zamanında WordPress tarafından ayarlanan genel bir genel olan genel olanını kullanın:
if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
// We're on the login page!
}
Giriş sayfası türünü de kontrol edebilirsiniz , örneğin kayıt:
if ( $GLOBALS['pagenow'] === 'wp-login.php' && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] === 'register' ) {
// We're registering
}
Aşağıdaki kod eski olarak kabul edilir ve kullanılmamalıdır ( wp-register.php
kullanımdan kaldırıldı ve daha sonra bir süre önce kaldırıldı):
if ( in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ) )
run_my_funky_plugin();
if( is_wplogin() ){
...
}
kod:
function is_wplogin(){
$ABSPATH_MY = str_replace(array('\\','/'), DIRECTORY_SEPARATOR, ABSPATH);
return ((in_array($ABSPATH_MY.'wp-login.php', get_included_files()) || in_array($ABSPATH_MY.'wp-register.php', get_included_files()) ) || (isset($_GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') || $_SERVER['PHP_SELF']== '/wp-login.php');
}
1) Bazen, REQUEST_URI
(veya SCRIPT_PATH
) ' yı kullanarak giriş sayfasını kontrol etmeye çalışırsanız , YANLIŞ DEĞERLER alırsınız, çünkü birçok eklenti GİRİŞ ve ADMIN URL'lerini değiştirir .
2) $pagenow
bu durumda da size yanlış değer verecektir!
get_included_files()
en doğru çözüm (benim için en azından) göründüğü zaman nadir bir durumdur .
Bunu yapmanın daha modern yolu, wp-login URL'si eklentiler tarafından değiştirilirken ve WP bir alt klasördeyken bile çalışmalıdır.
if(stripos($_SERVER["SCRIPT_NAME"], strrchr(wp_login_url(), '/')) !== false){
/* ... */
}
return false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] );
. Bu bana biraz daha temiz geliyor.
$GLOBALS['pagenow']
çalışmıyor, kullan $_SERVER['PHP_SELF']
.
if ( in_array( $_SERVER['PHP_SELF'], array( '/wp-login.php', '/wp-register.php' ) ) ){
// do something.
}
WordPress web kök klasöründe yüklü değilse YOUR_WP_PATH/wp-login.php
, dizideki elemanları değiştirmek gibi bazı parameller kullanmalısınız .
Aşağıdaki WordPress own wp_login_url () metodunu kullanarak uyguladım:
public static function is_wp_login() {
$login_path = rtrim( strtolower( parse_url( wp_login_url( '', true ), PHP_URL_PATH ) ), '/' );
return ( rtrim( strtolower( $_SERVER[ 'REQUEST_URI' ] ), '/' ) == $login_path );
}
Sadece iki yolu karşılaştırmak (sonlandırılabileceği için SSL kullanımı konusunda kesinlikle emin olmak zor olduğundan) yeterli olmalı ... Ancak, varsayılan giriş formunu değiştiren bir eklenti veya tema geliştiricisinin yapmış olması gerektiği anlamına gelir. öyleyse doğru yol ...
Giriş sayfasına değil sadece kayıt sayfasına ilgi duyuyorum. Yani bu herkes tarafından istenmeyebilir.
$ GLOBALS ['pagenow'] benim için index.php döndürür. Belki de dostum veya temam yüzünden.
Bu yüzden kullandım
is_page('register')
Kayıt sayfasının gövdesini denetlerseniz , ayrıca kimliği de vardır, bu nedenle sayfa-id-4906 yazıyorsa, daha iyi çalışıyorsa bu şekilde kullanabilirsiniz:
is_page('4906')
Mevcut cevapların hiçbiri benim için çalıştı.
Yaptığım şey $_GET
dizinin bir 'page' anahtarına sahip olup olmadığını ve değeri 'sign-in' olup olmadığını kontrol etmekti .
if (isset($_GET['page']) && $_GET['page'] == 'sign-in'){
// you're on login page
}
Burada önerilen birkaç çözüm işe yaradı, bu yüzden sıradan bir WordPress sitesinde (Multisite'da test edilmemiş) çalışan çok basit bir şeyle geldim.
Kadar basit:
if( !isset($_GET['action']) ){
echo 'This is the Login Page.';
} else {
echo 'This is the Register Page.';
}
Sadece ?action=register
kayıt sayfasında olduğunuzda var olan url parametresini dikkate alır .
İşte @ T.Todua cevabının PSR-2 versiyonu. Sadece güzelce biçimlendirdim. Bu, sınama amacıyla bir filtre ekleme gibi, işlevi işlemek için daha iyidir:
function isLoginPage()
{
$is_login_page = false;
$ABSPATH_MY = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, ABSPATH);
// Was wp-login.php or wp-register.php included during this execution?
if (
in_array($ABSPATH_MY . 'wp-login.php', get_included_files()) ||
in_array($ABSPATH_MY . 'wp-register.php', get_included_files())
) {
$is_login_page = true;
}
// $GLOBALS['pagenow'] is equal to "wp-login.php"?
if (isset($GLOBALS['pagenow']) && $GLOBALS['pagenow'] === 'wp-login.php') {
$is_login_page = true;
}
// $_SERVER['PHP_SELF'] is equal to "/wp-login.php"?
if ($_SERVER['PHP_SELF'] == '/wp-login.php') {
$is_login_page = true;
}
return $is_login_page;
}