Saya mencoba membuat plugin kecil untuk dipasang di beberapa situs klien Jerman.
Saya dapat menjelajahi WordPress dalam bahasa Jerman, tetapi akan lebih mudah jika menggunakan bahasa Inggris.
Ada sebuah plugin yang mengelola ini ( WP Native Dashboard ) dan meskipun melakukannya dengan luar biasa, itu terlalu berat untuk apa yang saya butuhkan. Klien tidak membutuhkan ini, saya perlu.
Mencoba meniru itu tidak berhasil ... Ini menyimpan opsi database untuk memeriksa swapping bukan $current_user
. Tetapi saya tidak mendapatkan logika untuk ini bekerja.
Jadi, saya mencoba untuk mengadaptasi solusi yang diberikan oleh toscho ini , tetapi sepertinya saya tidak membuat kaitan dengan poin yang benar dari proses WordPress.
Pertanyaannya adalah: bit apa yang hilang (atau saya main-main) dalam kode berikut?
<?php
/*
Plugin Name: Set User Locale
Plugin URI: https://wordpress.stackexchange.com/q/53326/12615
Description: changes the admin language according to user_login
Version: 1.0
Author: wordpress-stackexchange
*/
class Wpse53326_ChangeLocaleOnDemand
{
public function __construct()
{
add_action('admin_init', array(&$this, 'on_init'));
add_filter( 'locale', array(&$this, 'on_change_language') );
}
public function on_init()
{
}
public function on_change_language( $locale )
{
global $current_user;
// this prints the current user_login without problems
// global $firephp;
// $firephp->log($current_user->data->user_login,'user_login');
// the following works for backend/frontend
// but if I try this conditional, it don't: if (is_admin() && 'the_user_login' == $current_user->data->user_login)
if( is_admin() )
{
return 'en_US';
}
return $locale;
}
}
$wpse53326_ChangeLocaleOnDemand_instance = new Wpse53326_ChangeLocaleOnDemand();
sumber
admin_init
. Kemudian jatuhkanis_admin();
dan lihat apakah$current_user
benar-benar berisi sub objek bernamadata
.admin_init
tidak - dan ya,$current_user
sudah diisi, saya menggunakan FirePHP untuk debugging ... terima kasih!$current_user->data
sudah terisi :) Plus: apakah berfungsi tanpa cek?$current_user
- Cukup lucu karena informasinya ada ...Jawaban:
Ok, akhirnya sampai pada inti konsep dasar WP Native Dashboard dan itu berfungsi sekarang.
File sedang digunakan sebagai
mu-plugin
, dan setiap kali saya harus bekerja di situs saya ganti namanya dariset-user-locale.phpa
menjadiset-user-locale.php
, dan kemudian kembali lagi. Dengan demikian mengaktifkan dan menonaktifkan tanpa plugin yang ada di hadapan klien.[update]
Mengikuti petunjuk kaiser, plugin ini hanya muncul di daftar plugins untuk pengguna yang ditentukan saat memulai kelas (yang sama untuk bahasa yang diubah).
Plugin sekarang terletak di root folder plugins reguler.
[pembaruan 2]
Versi baru: hanya membahas inti dari pertanyaan. Untuk bagian persembunyiannya saya menggunakan teknik lain . Sebagai versi 1.2 memiliki kelemahan hanya bersembunyi otomatis saat aktif.
sumber
de-/activate
lebih mudah? ;) Baik melihatnya bekerja. +1