Tôi đang cố gắng tạo một plugin nhỏ để cài đặt trong một số trang web của một khách hàng Đức.
Tôi có thể thực hiện theo cách của mình xung quanh WordPress bằng tiếng Đức, nhưng sẽ dễ dàng hơn nếu nó bằng tiếng Anh.
Có một plugin quản lý cái này ( Bảng điều khiển riêng của WP ) và mặc dù nó rất tuyệt vời, nó quá nặng so với những gì tôi cần. Khách hàng không cần điều này, tôi làm.
Đã thử mô phỏng nó vô ích ... Nó lưu trữ một tùy chọn cơ sở dữ liệu để kiểm tra thay thế $current_user
. Nhưng tôi đã không có được logic để làm việc này.
Vì vậy, tôi đang cố gắng điều chỉnh giải pháp này do toscho đưa ra , nhưng có vẻ như tôi không tạo ra các móc nối trong các điểm chính xác của quy trình WordPress.
Câu hỏi là: bit nào bị thiếu (hoặc tôi đang làm rối) trong đoạn mã sau?
<?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();
admin_init
không - và vâng, $current_user
được điền, tôi sử dụng FirePHP để gỡ lỗi ... cảm ơn!
$current_user->data
có dân cư :) Plus: nó có hoạt động với các kiểm tra không?
$current_user
- Thật buồn cười vì thông tin ở đó ...
admin_init
. Sau đó thảis_admin();
và xem nếu$current_user
thực sự có chứa một đối tượng phụ có têndata
.