জাভাস্ক্রিপ্ট ফাংশন wp_attempt_focus
এই সমস্যাটি সৃষ্টি করছে। পৃষ্ঠা লোডের অল্পক্ষণ পরে ফাংশনটি আগুনে ফর্মটি সাফ করে এবং এতে মনোনিবেশ করে, ব্যবহারকারীদের ম্যানুয়ালি তাদের লগইন তথ্য প্রবেশ করতে বাধ্য করে।
জেএস ফাংশনটি ক্ষেত্রটি সাফ করার আগে ক্রোম স্বয়ংক্রিয়ভাবে ব্যবহারকারীর নাম এবং পাসওয়ার্ড পূরণ করছে mill ক্ষেত্রগুলি আসলে খালি থাকলেও ক্রোম হলুদ বর্ণের ভরাট ক্ষেত্রগুলি প্রদর্শন করে সঠিকভাবে পরিবর্তনগুলি গ্রহণ করে না।
যদিও আমি অটোফোকাস কার্যকারিতাটির প্রশংসা করি, তবে ফর্মটি স্বয়ংক্রিয়ভাবে সাফ হয়ে যেতে চাইবে এমন কোনও ভাল কারণ আমি ভাবতে পারি না।
উৎস
দুঃখের বিষয়, ফাংশনটি wp-login.php
913-930 (ওয়ার্ডপ্রেস 4.0) লাইনে হার্ডকোড করা হয়েছে । পরিবর্তন করা হচ্ছেwp-login.php
ফাইলটি পুরোপুরি করা একটি খারাপ ধারণা, যেহেতু এটি কোনও আসন্ন ওয়ার্ডপ্রেস আপডেটে ওভাররাইট করা যেতে পারে। সুতরাং আমাদের কিছুটা 'হ্যাকিং' অবলম্বন করতে হবে।
সহজ ফিক্স
wp_attempt_focus
যদি ফর্ম কোন ত্রুটি আছে ফাংশন বলা হয়। আমরা ভাগ্যে আছি - পিএইচপি এর মাধ্যমে ত্রুটি পরীক্ষা করা হয়। এর অর্থ আমরা ডাব্লুপি ক্রিয়া ব্যবহার করে সঠিক সময়ে কোনও ফর্ম ত্রুটি ফোকাস করে ফাংশনটি গুলি থেকে আটকাতে পারি। আমি login_form
পদক্ষেপটি বেছে নিয়েছি কারণ জেএস কলের ঠিক আগে, ত্রুটি পরিচালনার পরে ক্রিয়াটি সর্বদা আগুনে ছড়িয়ে পড়ে । আপনার থিমের functions.php
(বা প্লাগইন ফাইল) এ নিম্নলিখিত কোড যুক্ত করুন :
add_action("login_form", "kill_wp_attempt_focus");
function kill_wp_attempt_focus() {
global $error;
$error = TRUE;
}
হ্যাকিশ ফিক্স
উপরের ফিক্সটি পুরোপুরি ফায়ারিং থেকে ফাংশনটিকে বাধা দেয়, এর অর্থ আপনি যথাযথ অটোফোকাস পাবেন না। এর চারপাশে আরও একটি উপায় রয়েছে: এইচটিএমএল আউটপুটকে বাফার করা এবং গিক্লাবob_start
দ্বারা অনুপ্রাণিত হয়ে এর মাধ্যমে এটিকে সংশোধন করা । বাফারিং আমাদের কোডের নির্দিষ্ট অংশগুলি সরাতে দেয় - এই ক্ষেত্রে, স্বতঃস্ফূর্ত অংশ । যদিও বাফারটি ফ্লাশ করতে ভুলবেন না।d.value = ''
add_action("login_form", "kill_wp_attempt_focus_start");
function kill_wp_attempt_focus_start() {
ob_start("kill_wp_attempt_focus_replace");
}
function kill_wp_attempt_focus_replace($html) {
return preg_replace("/d.value = '';/", "", $html);
}
add_action("login_footer", "kill_wp_attempt_focus_end");
function kill_wp_attempt_focus_end() {
ob_end_flush();
}