আমি এখানে উল্লিখিত সমস্ত সমস্যার মোকাবিলার জন্য যে বর্তমান পদ্ধতিটি ব্যবহার করছি তা খালি ব্যবহারকারীর নাম / পাসওয়ার্ড দিয়েও দুর্দান্ত কাজ করে এবং জাভাস্ক্রিপ্টের উপর নির্ভর করে না (যদিও জেএস এর সাথে ভাল হতে পারে)।
add_action( 'wp_login_failed', 'custom_login_failed' );
function custom_login_failed( $username )
{
$referrer = wp_get_referer();
if ( $referrer && ! strstr($referrer, 'wp-login') && ! strstr($referrer,'wp-admin') )
{
wp_redirect( add_query_arg('login', 'failed', $referrer) );
exit;
}
}
একটি ফাঁকা ব্যবহারকারীর নাম / পাসওয়ার্ড কীভাবে চিকিত্সা করা হয় তা পরিবর্তনের জন্য কীটি হ'ল:
add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
function custom_authenticate_username_password( $user, $username, $password )
{
if ( is_a($user, 'WP_User') ) { return $user; }
if ( empty($username) || empty($password) )
{
$error = new WP_Error();
$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
return $error;
}
}
আপনি এটি আরও একধাপ এগিয়ে নিয়ে যেতে পারেন এবং আপনার পছন্দসই লগইন পৃষ্ঠায় ব্যবহারকারীদের পুনর্নির্দেশের মাধ্যমে wp-login.php সম্পূর্ণরূপে প্রতিস্থাপন করতে পারেন এবং সেই পৃষ্ঠাটি লগইন_ফয়েল পুনর্নির্দেশের জন্যও ব্যবহার করতে পারেন। সম্পূর্ণ কোড:
/**
* Custom Login Page Actions
*/
// Change the login url sitewide to the custom login page
add_filter( 'login_url', 'custom_login_url', 10, 2 );
// Redirects wp-login to custom login with some custom error query vars when needed
add_action( 'login_head', 'custom_redirect_login', 10, 2 );
// Updates login failed to send user back to the custom form with a query var
add_action( 'wp_login_failed', 'custom_login_failed', 10, 2 );
// Updates authentication to return an error when one field or both are blank
add_filter( 'authenticate', 'custom_authenticate_username_password', 30, 3);
// Automatically adds the login form to "login" page
add_filter( 'the_content', 'custom_login_form_to_login_page' );
/**
* Custom Login Page Functions
*/
function custom_login_url( $login_url='', $redirect='' )
{
$page = get_page_by_path('login');
if ( $page )
{
$login_url = get_permalink($page->ID);
if (! empty($redirect) )
$login_url = add_query_arg('redirect_to', urlencode($redirect), $login_url);
}
return $login_url;
}
function custom_redirect_login( $redirect_to='', $request='' )
{
if ( 'wp-login.php' == $GLOBALS['pagenow'] )
{
$redirect_url = custom_login_url();
if (! empty($_GET['action']) )
{
if ( 'lostpassword' == $_GET['action'] )
{
return;
}
elseif ( 'register' == $_GET['action'] )
{
$register_page = get_page_by_path('register');
$redirect_url = get_permalink($register_page->ID);
}
}
elseif (! empty($_GET['loggedout']) )
{
$redirect_url = add_query_arg('action', 'loggedout', custom_login_url());
}
wp_redirect( $redirect_url );
exit;
}
}
function custom_login_failed( $username )
{
$referrer = wp_get_referer();
if ( $referrer && ! strstr($referrer, 'wp-login') && ! strstr($referrer, 'wp-admin') )
{
if ( empty($_GET['loggedout']) )
wp_redirect( add_query_arg('action', 'failed', custom_login_url()) );
else
wp_redirect( add_query_arg('action', 'loggedout', custom_login_url()) );
exit;
}
}
function custom_authenticate_username_password( $user, $username, $password )
{
if ( is_a($user, 'WP_User') ) { return $user; }
if ( empty($username) || empty($password) )
{
$error = new WP_Error();
$user = new WP_Error('authentication_failed', __('<strong>ERROR</strong>: Invalid username or incorrect password.'));
return $error;
}
}
function custom_login_form_to_login_page( $content )
{
if ( is_page('login') && in_the_loop() )
{
$output = $message = "";
if (! empty($_GET['action']) )
{
if ( 'failed' == $_GET['action'] )
$message = "There was a problem with your username or password.";
elseif ( 'loggedout' == $_GET['action'] )
$message = "You are now logged out.";
elseif ( 'recovered' == $_GET['action'] )
$message = "Check your e-mail for the confirmation link.";
}
if ( $message ) $output .= '<div class="message"><p>'. $message .'</p></div>';
$output .= wp_login_form('echo=0&redirect='. site_url());
$output .= '<a href="'. wp_lostpassword_url( add_query_arg('action', 'recovered', get_permalink()) ) .'" title="Recover Lost Password">Lost Password?</a>';
$content .= $output;
}
return $content;
}
পাসওয়ার্ড পুনরুদ্ধারের জন্য wp-login পৃষ্ঠায় আপনার লোগো যুক্ত করতে কাস্টমাইজ করুন এবং এগুলি যুক্ত করুন:
// calling it only on the login page
add_action( 'login_enqueue_scripts', 'custom_login_css', 10 );
function custom_login_css() { wp_enqueue_style( 'custom_login_css', get_template_directory_uri() .'/library/css/login.css', false ); }
// changing the logo link from wordpress.org to your site
add_filter( 'login_headerurl', 'custom_login_logo_url' );
function custom_login_logo_url() { return home_url(); }
// changing the alt text on the logo to show your site name
add_filter( 'login_headertitle', 'custom_login_title' );
function custom_login_title() { return get_option('blogname'); }
লোগো লোগো সিএসএস:
.login h1 a {
background: url(../images/login-logo.png) no-repeat top center;
width: 274px;
height: 63px;
text-indent: -9999px;
overflow: hidden;
padding-bottom: 15px;
display: block;
}
সম্পাদনা: আমি এটি কেবলমাত্র অন্য একটি সাইট ফর্ম স্ক্র্যাচে প্রয়োগ করেছি এবং উপরের "আরও ধাপে" আরও সম্পূর্ণ হতে পেরেছি এবং "অ্যাড_অ্যাকশনস" এ ছোট সিনট্যাক্স ত্রুটিগুলি স্থির করেছি। একটি পৃথক টেম্পলেট ফাইল ছাড়াই লগইন পৃষ্ঠায় লগইন ফর্মটি স্বয়ংক্রিয়ভাবে যুক্ত করার জন্য কিছু মন্তব্য এবং একটি পদ্ধতি যুক্ত করেছে। লগইন ফর্ম পদ্ধতিটি বেশিরভাগ ক্ষেত্রে কাজ করা উচিত, যেহেতু এটি "the_Contant" এর সাথে সংযুক্ত রয়েছে তাই লগইন পৃষ্ঠায় আপনার যদি একাধিক লুপ থাকে তবে কেবল সেই ক্ষেত্রে একটি পৃষ্ঠা-লগইন.এফপি টেম্পলেট ব্যবহার করুন issue