यदि वर्तमान पृष्ठ wp-login.php
या है तो मैं कैसे जांच सकता हूं wp-signup.php
?
उपयोग करने से अधिक सुरुचिपूर्ण समाधान हैं $_SERVER['REQUEST_URI']
?
यदि वर्तमान पृष्ठ wp-login.php
या है तो मैं कैसे जांच सकता हूं wp-signup.php
?
उपयोग करने से अधिक सुरुचिपूर्ण समाधान हैं $_SERVER['REQUEST_URI']
?
जवाबों:
उस वैश्विक का उपयोग करें $pagenow
, जो रनटाइम में वर्डप्रेस द्वारा एक आम वैश्विक सेट है:
if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
// We're on the login page!
}
उदाहरण के लिए, आप पंजीकरण के प्रकार को भी देख सकते हैं :
if ( $GLOBALS['pagenow'] === 'wp-login.php' && ! empty( $_REQUEST['action'] ) && $_REQUEST['action'] === 'register' ) {
// We're registering
}
निम्नलिखित कोड को विरासत माना जाता है और इसका उपयोग नहीं किया जाना चाहिए ( wp-register.php
कुछ समय पहले हटा दिया गया था और बाद में काफी हटा दिया गया था):
if ( in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ) )
run_my_funky_plugin();
if( is_wplogin() ){
...
}
कोड:
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) कभी-कभी, यदि आप REQUEST_URI
(या SCRIPT_PATH
) का उपयोग करके लॉगिन पृष्ठ की जांच करने का प्रयास करते हैं, तो आपको INCORRECT VALUES मिलेंगे, क्योंकि कई प्लगइन्स लोगिन और ADMIN यूआरएल बदलते हैं ।
2) $pagenow
आपको उस मामले में भी गलत मूल्य देगा!
get_included_files()
सबसे सटीक समाधान लगता है (मेरे लिए कम से कम)।
ऐसा करने के लिए और अधिक आधुनिक तरीका, यह तब भी काम करना चाहिए जब wp-login URL प्लगइन्स द्वारा बदल दिया जाए और जब WP किसी सबफ़ोल्डर में हो, आदि:
if(stripos($_SERVER["SCRIPT_NAME"], strrchr(wp_login_url(), '/')) !== false){
/* ... */
}
return false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] );
:। यह मुझे थोड़ा साफ लगता है।
$GLOBALS['pagenow']
काम नहीं करता है, का उपयोग करें $_SERVER['PHP_SELF']
।
if ( in_array( $_SERVER['PHP_SELF'], array( '/wp-login.php', '/wp-register.php' ) ) ){
// do something.
}
और यदि आपका वर्डप्रेस वेब रूट फ़ोल्डर में स्थापित नहीं है, तो आपको कुछ पैराम्स का उपयोग करना चाहिए, जैसे YOUR_WP_PATH/wp-login.php
तत्वों को एरे में बदलना।
मैंने इसे वर्डप्रेस के ही wp_login_url () विधि का उपयोग करके कार्यान्वित किया है:
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 );
}
बस दोनों रास्तों की तुलना करना (क्योंकि एसएसएल के उपयोग के बारे में पूरी तरह से सुनिश्चित होना मुश्किल है क्योंकि इसे समाप्त किया जा सकता है) पर्याप्त होना चाहिए ... इसका मतलब यह है, हालांकि, एक प्लगइन या थीम डेवलपर जो डिफ़ॉल्ट लॉगिन फ़ॉर्म को बदलता है, उसे अवश्य किया जाना चाहिए। तो उचित तरीका ...
मुझे केवल रजिस्टर पेज में ही दिलचस्पी है, लॉगिन पेज में नहीं। इसलिए यह हर कोई नहीं चाहता है।
$ GLOBALS [ow pagenow ’] मेरे लिए index.php लौटाता है। शायद दोस्त या मेरे विषय के कारण।
इसलिए मैंने इस्तेमाल किया
is_page('register')
यदि आप पंजीकरण पृष्ठ के निकाय का निरीक्षण करते हैं, तो इसके साथ ही आईडी भी है, इसलिए यदि यह पेज-आईडी-4906 कहता है, तो आप इसे इस तरह से उपयोग कर सकते हैं यदि यह बेहतर काम करता है:
is_page('4906')
वर्तमान उत्तरों में से किसी ने भी मेरे लिए काम नहीं किया।
मैंने जो किया है वह जाँच रहा था कि क्या $_GET
सरणी में 'पृष्ठ' कुंजी है और यदि उसका मान 'साइन-इन' है।
if (isset($_GET['page']) && $_GET['page'] == 'sign-in'){
// you're on login page
}
यहां प्रस्तावित कुछ समाधानों ने काम किया है, इसलिए मैं वास्तव में कुछ सरल के साथ आया हूं जो एक साधारण वर्डप्रेस साइट पर काम करता है (मल्टीसाइट पर परीक्षण नहीं किया गया है)।
की तरह सरल:
if( !isset($_GET['action']) ){
echo 'This is the Login Page.';
} else {
echo 'This is the Register Page.';
}
यह url पैरामीटर को ध्यान में रखता है ?action=register
, जो केवल तब होता है जब आप पंजीकरण पृष्ठ पर होते हैं।
यहाँ @ T.Todua उत्तर का PSR-2 संस्करण है। मैं इसे अच्छी तरह से स्वरूपित करता हूं। यह फ़ंक्शन में हेरफेर करने के लिए बेहतर है, जैसे परीक्षण प्रयोजनों के लिए एक फिल्टर जोड़ना, आदि:
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;
}