আমি কিভাবে পরীক্ষা করতে পারবেন যদি বর্তমান পাতা 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
) ব্যবহার করে লগইন পৃষ্ঠাটি চেক করার চেষ্টা করেন তবে আপনি সঠিক মূল্যগুলি পাবেন, কারণ অনেক প্লাগইন লোগিন এবং অ্যাডমিন url পরিবর্তন করে ।
2) $pagenow
সেই ক্ষেত্রে আপনাকেও ভুল মান দেবে!
get_included_files()
সর্বাধিক সঠিক সমাধান বলে মনে হয় (পাছে আমার জন্য)।
এটি করার আরও আধুনিক উপায়, ডাব্লুপি-লগইন ইউআরএল প্লাগইনগুলির মাধ্যমে পরিবর্তিত হওয়া এবং ডাব্লুপি যখন সাবফোল্ডার ইত্যাদিতে থাকে তখনও এটি কাজ করা উচিত:
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 );
}
কেবলমাত্র উভয় পাথের তুলনা করা (কারণ এটি এসএমএসের ব্যবহার সম্পর্কে একেবারে নিশ্চিত হওয়া শক্ত কারণ এটি সমাপ্ত হতে পারে) যথেষ্ট হওয়া উচিত ... তবে এর অর্থ এই নয় যে ডিফল্ট লগইন ফর্মটি পরিবর্তন করে এমন একটি প্লাগইন বা থিম বিকাশকারী অবশ্যই করেছে সুতরাং সঠিক উপায় ...
আমি কেবল নিবন্ধভুক্ত পৃষ্ঠায় আগ্রহী, লগইন পৃষ্ঠায় নয়। সুতরাং এটি প্রত্যেকের দ্বারা পছন্দ করা যাবে না।
LO বিশ্বব্যাপী ['পেজনো'] আমার জন্য সূচি.পি.পি. প্রদান করে। হয়তোবা বডপ্রেস বা আমার থিমের কারণে।
সুতরাং আমি ব্যবহার
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.';
}
এটি ইউআরএল প্যারামিটার বিবেচনায় নেয় ?action=register
, যা কেবলমাত্র যখন আপনি নিবন্ধকরণ পৃষ্ঠায় থাকবেন তখনই উপস্থিত থাকে।
এখানে @ টি.ডি.উডুয়া উত্তরের পিএসআর -২ সংস্করণ রয়েছে। আমি কেবল এটি সুন্দরভাবে ফর্ম্যাট করেছি। ফাংশনটি পরিচালনা করা যেমন পরীক্ষার উদ্দেশ্যে ফিল্টার যুক্ত করা ইত্যাদির জন্য এটি আরও ভাল:
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;
}