Frontend và backend ngôn ngữ khác nhau

Frontend và backend là hai định nghĩa ý chỉ giao diện người dùng bên trong bảng điều khiển admin và giao diện bên ngoài của blog WordPress. Nếu bạn yêu thích bảng điều khiển admin với ngôn ngữ mặc định là Tiếng Anh, còn giao diện bên ngoài bạn sử dụng ngôn ngữ là Tiếng Việt thì bài viết này có thể giúp được bạn.

function sb_theme_frontend_vietnamese($locale) {
    if(!is_admin()) {
        $locale = 'vi';
        return $locale;
    }
}
add_filter('locale', 'sb_theme_frontend_vietnamese', 1, 1);

Bạn mở tập tin functions.php của giao diện lên và thêm vào hàm cùng với filter như trên. Bộ lọc này sẽ kiểm tra và trả về ngôn ngữ là Tiếng Việt khi người dùng ở ngoài frontend.

Đối với WordPress phiên bản 4.7 trở về sau thì bạn có thể sử dụng hàm switch_to_locale để thực hiện việc chuyển đổi giữa các loại ngôn ngữ, mình viết một ví dụ đoạn code bên dưới cho các bạn tham khảo nếu chưa biết.

function hocwp_theme_custom_switch_locale() {
	if ( ! function_exists( 'request_filesystem_credentials' ) ) {
		require_once( ABSPATH . 'wp-admin/includes/file.php' );
	}
	if ( ! function_exists( 'wp_can_install_language_pack' ) ) {
		require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
	}
	if ( wp_can_install_language_pack() ) {
		$locale    = 'as';
		$languages = get_available_languages();
		$tr_name   = 'hocwp_reload_page';
		if ( ! is_array( $languages ) || ! in_array( $locale, $languages ) ) {
			$language = wp_download_language_pack( $locale );
			set_transient( $tr_name, 1 );
		} else {
			$language = true;
		}

		if ( $language && function_exists( 'switch_to_locale' ) ) {
			switch_to_locale( $locale );
			if ( false !== get_transient( $tr_name ) ) {
				hocwp_reload_page();
				delete_transient( $tr_name );
			}
		}
	}
}

add_action( 'init', 'hocwp_theme_custom_switch_locale', 99 );

Hàm bên trên có nghĩa là hệ thống luôn sử dụng ngôn ngữ thiết lập sẵn đầu vào, ở đây mình đang test thử với ngôn ngữ là as, bạn cần chỉnh sửa lại chút ít cho phù hợp với đoạn code của bạn nhé.