Login Admin Wordpress Otomatis di PHP


Posting hari ini hanya singkat di mana saya akan menunjukkan kepada Anda cara memasang fitur kecil yang rapi di situs WordPress Anda. Ini, jika digunakan dengan aman, bisa sangat nyaman. Ini dirancang untuk digunakan di situs WordPress yang menawarkan akun umum bagi pengguna untuk login. Misalnya, pada banyak demo backend WordPress, penulis akan membuat akun 'demo' bagi calon pelanggan untuk login dan bermain dengan produknya. Lebih sering daripada tidak, penulis hanya akan menampilkan pemberitahuan yang mengatakan;

NAMA PENGGUNA: demo
PASSWORD: demo

Ini sedikit pejalan kaki. Tentunya kita bisa membuat demo terlihat sedikit lebih ramping dan profesional? Saya akan memberi Anda cuplikan singkat untuk login otomatis ke admin WordPress dengan kredensial ini. Ini dapat dimasukkan ke dalam file fungsi tema Anda, atau dapat dimasukkan ke dalam file pluginnya sendiri dan diaktifkan.

Hal ini dapat berguna jika;

  • Situs Anda memiliki akun umum untuk login oleh pengguna anonim.
  • Anda menginginkan tautan masuk 'satu klik'.
  • Anda ingin memaksimalkan konversi demo produk dengan menyediakan jalur cepat dan efisien ke demo, meminimalkan langkah-langkah yang diperlukan.
  • Anda ingin mengarahkan pengunjung langsung ke lokasi yang relevan (misalnya halaman pengaturan).

PENTING: Jangan pernah menggunakan ini untuk masuk ke akun dengan kekuatan nyata; misalnya. Akun Administrator/Editor dll.
Gunakan cuplikan ini dengan hati-hati.

Oke, seperti yang sudah saya lakukan di tutorial saya yang lain, saya akan memberikan kode lengkap yang diberi anotasi terlebih dahulu agar Anda yang tidak suka membaca bisa langsung bereksperimen dengannya. Cuplikan berikut telah ditata dalam bentuk plugin mandiri (preferensi pribadi saya).

/*
Plugin Name: Auto Login
Plugin URI: http://hbt.io/
Version: 1.0.0
Author: Harri Bell-Thomas
Author URI: http://hbt.io/
*/

function autologin() {
	// PARAMETER TO CHECK FOR
	if ($_GET['autologin'] == 'demo') {
		
		// ACCOUNT USERNAME TO LOGIN TO
		$creds['user_login'] = 'demo';
		
		// ACCOUNT PASSWORD TO USE
		$creds['user_password'] = 'demo';
		
		$creds['remember'] = true;
		$autologin_user = wp_signon( $creds, false );
		
		if ( !is_wp_error($autologin_user) ) 
			header('Location: wp-admin'); // LOCATION TO REDIRECT TO
	}
}
// ADD CODE JUST BEFORE HEADERS AND COOKIES ARE SENT
add_action( 'after_setup_theme', 'autologin' );

PENGGUNAAN

Ini sangat mudah digunakan. Nama pengguna dan kata sandi akun ditentukan dalam file plugin (kode di atas), dan untuk login Anda hanya perlu mengunjungi; http://example.com/wp-login.php?autogin=demo

Anda harus segera diarahkan ke wp-admin, login ke akun yang ditentukan. Namun jika kredensialnya salah, Anda seharusnya melihat formulir login seperti biasa.

SESUAIKAN

Cuplikan ini sangat mudah untuk disesuaikan. Pada dasarnya hanya ada 3 hal yang perlu Anda edit, dan semua perubahan ini dilakukan di blok kode berikut (baris 11 hingga 17 dari kode lengkap)

if ($_GET['login'] == 'dummy_account') {

        // ACCOUNT USERNAME TO LOGIN TO
        $creds['user_login'] = 'dummy';

        // ACCOUNT PASSWORD TO USE
        $creds['user_password'] = 'pa55word';

Pada baris pertama Anda akan melihat pemeriksaan bersyarat untuk parameter URL. Blok kode di atas akan memeriksa; wp-login.php?login=dummy_account

Nilai-nilai ini dapat berupa apa pun yang Anda inginkan, namun berhati-hatilah untuk menghindari parameter asli WordPress seperti 'logggedout', 'action', dan 'redirect_to'. Baris 4 adalah tempat Anda menentukan nama pengguna untuk login; cuplikan kode yang disesuaikan akan mencoba masuk ke akun 'dummy'. Seperti yang mungkin bisa Anda tebak, baris 7 adalah tempat Anda menentukan kata sandi. Kata sandi di atas adalah 'pa55word'. Isi nilai-nilai ini dan Anda siap melakukannya!

EKSTENSI

Saat ini cuplikan kami hanya disiapkan untuk masuk otomatis ke satu akun. Bagaimana jika kita menginginkan link login yang berbeda untuk akun yang berbeda? Ini cukup cepat dan mudah dilakukan serta tidak mengharuskan Anda mengulangi keseluruhan cuplikan berulang kali. Lihat solusi saya di bawah ini.

/*
Plugin Name: Auto Login
Plugin URI: http://hbt.io/
Description: Create convenient auto-login links to quickly login to generic accounts. Configure source code to make changes.
Version: 1.0.0
Author: Harri Bell-Thomas
Author URI: http://hbt.io/
*/

// Declare global var's
global $login_parameter, $accounts;

// THE PARAMETER TO CHECK FOR
// eg. http://exmaple.com/wp-login.php?param_name=account
$login_parameter = "autologin";

// ACCOUNT CODE BLOCK
$accounts[] = array(
				"user" => "demo",
				"pass" => "demo",
				"location" => "wp-admin",
			  );
// END ACCOUNT CODE BLOCK

// EDIT AND REPEAT CODE BLOCK FOR AS MANY ACCOUNTS AS NEEDED

// Another example iteration
$accounts[] = array(
				"user" => "tcwp",
				"pass" => "demo",
				"location" => "wp-admin/?tcwp-sent-me",
			  );


// SEE PREVIOUS EXAMPLE FOR DETAILS ABOUT THIS FUNCTION
function autologin() {
	global $login_parameter, $accounts;
	foreach ($accounts as $account) {
		if ($_GET[$login_parameter] == $account['user']) {
			$creds['user_login'] = $account['user'];
			$creds['user_password'] = $account['pass'];
			$creds['remember'] = true;
			$autologin_user = wp_signon( $creds, false );
			if ( !is_wp_error($autologin_user) ) 
				header('Location: ' . $account['location']); 
		}
	}
}
add_action( 'after_setup_theme', 'autologin' );

Pada intinya, ini pada dasarnya sama, tetapi dengan loop foreach yang kurang ajar ditambah array akun juga dimasukkan. Anatomi fungsi autologin() identik, kecuali fakta bahwa kodenya diulang (menggunakan loop foreach) untuk setiap akun. Semua detail yang relevan kini disimpan dalam array global. Contoh di atas disiapkan untuk 2 akun, namun cuplikan kami dapat menampung sebanyak yang kami perlukan. Untuk menambahkan akun tambahan, cukup sesuaikan dan tambahkan blok kode berikut sebanyak yang Anda perlukan.

// ACCOUNT CODE BLOCK
$accounts[] = array(
				"user" => "anotheraccount",
				"pass" => "public_password",
				"location" => "http://YouCanPutURLsHereToo.com/",
			  );
// END ACCOUNT CODE BLOCK

Anda juga akan melihat bahwa saya telah memindahkan nama parameter ke variabel global: ini tidak perlu, tetapi saya melakukannya hanya untuk menghapus semua nilai kode keras dari fungsi autologin().

KESIMPULAN

Cuplikan ini hanyalah fungsi sederhana yang dirancang untuk penggunaan ringan, seperti pada situs demo produk, namun berpotensi digunakan untuk skenario login yang jauh lebih kompleks. Kode selanjutnya seharusnya cukup jelas, tetapi jika Anda memiliki pertanyaan tentang apa yang telah saya lakukan, atau mengapa saya melakukannya, tinggalkan komentar di bawah atau tweet saya. Jika Anda memiliki masukan/saran/ide, silakan tinggalkan komentar di kolom komentar di bawah!