Время для прочтения: 1 мин. 9 сек.

Возвращаем шрифт Open Sans в админку WordPress

Как вы уже наверное заметили, из админки WordPress с версии 4.6 пропал прекрасный шрифт Open Sans, на смену ему пришли дефолтные шрифты самой операционной системы.

Теперь дашборд WordPress 4.6 использует уже имеющиеся в вашей операционной системем шрифты, что ускоряет загрузку панели инструментов и позволяет вам чувствовать себя как дома на любом устройстве, которое вы используете.

Это, конечно, клёво, но мне реально не нравится дашборд WordPress, открытый в Windows, где на данный момент дефолтным sans-serif шрифтом является Segoe UI.

Поэтому, как обычно, нашёлся добрый человек по-имени George Jipa и запилил небольшой плагин, возвращающий назад шрифт Open Sans.

<?php
/**
 * OpenSans FTW
 *
 * Plugin Name: OpenSans FTW
 * Plugin URI: http://wpcrumbs.com/
 * Description: Just a simple plugin that brings back the old Open Sans font to WordPress 4.6+ dashboard.
 * Version: 1.0.1
 * Author: GeorgeJipa
 * Author URI: http://wpcrumbs.com/
 * Text Domain: opensans-ftw
 * Domain Path: /languages
 * License: GPLv2 or later
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 */
// Exit if accessed directly
if (!defined('ABSPATH'))
	exit;

class OpenSans_FTW {

	protected static $instance = null;
	public $plugin_slug = 'opensans-ftw';
	public $action_name;

	public static function get_instance() {
		if (null == self::$instance) {
			self::$instance = new self;
		}

		return self::$instance;
	}

	/**
	 * Initialize
	 * 
	 * @return
	 */
	public function __construct() {
		// set localisation
		$this->load_plugin_textdomain();
		
		// check wordpress version
		$wp_version = get_bloginfo('version');
		
		if (version_compare($wp_version, '4.6', '<')) {
			add_action('admin_notices', array($this, 'add_notice'));
			return;
		}

		// set vars
		$this->action_name = $this->get_action_name();

		// hooks
		add_action($this->action_name, array($this, 'add_assets'), 999);
	}

	/**
	 * Load localisation files
	 *
	 * Locales found in:
	 *      - WP_LANG_DIR/opensans-ftw/opensans-ftw-LOCALE.mo
	 *      - WP_CONTENT_DIR/plugins/opensans-ftw-LOCALE.mo
	 */
	public function load_plugin_textdomain() {
		$locale = apply_filters('plugin_locale', get_locale(), $this->plugin_slug);

		load_textdomain($this->plugin_slug, WP_LANG_DIR . '/' . $this->plugin_slug . '/' . $this->plugin_slug . '-' . $locale . '.mo');
		load_plugin_textdomain($this->plugin_slug, false, plugin_basename(dirname(__FILE__)) . '/languages');
	}

	/**
	 * Get action_name based on page
	 * 
	 * @global string $pagenow
	 * @return string
	 */
	public function get_action_name() {
		global $pagenow;

		if (is_admin()) {
			$action_name = 'admin_enqueue_scripts';
		} elseif ($pagenow == 'wp-login.php') {
			$action_name = 'login_enqueue_scripts';
		} else {
			$action_name = 'wp_enqueue_scripts';
		}

		return $action_name;
	}

	/**
	 * Add notice
	 */
	public function add_notice() {
		echo '<div id="message" class="error"><p>' . esc_html__('OpenSans FTW requires WordPress 4.6 or higher.', $this->plugin_slug) . '</p></div>';
	}

	/**
	 * Add assets to backend (admin) or frontend
	 * 
	 * @return
	 */
	public function add_assets() {
		// we don't need to add the assets when the adminbar is disabled (on dashboard is always enabled, 
		// but on frontend can be disabled using `show_admin_bar` hook... so we need to check)
		// ! exception will be wp-login.php page !
		if (!is_admin_bar_showing() && $this->action_name != 'login_enqueue_scripts') {
			return;
		}

		// enqueue font
		$handle = 'open-sans';

		if (wp_style_is($handle, 'registered')) {
			wp_enqueue_style($handle);
		} else {
			wp_enqueue_style($handle, '//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600&subset=latin,latin-ext');
		}

		// add custom css based on page
		switch ($this->action_name) {
			case 'wp_enqueue_scripts':
				$custom_css = '#wpadminbar *:not([class="ab-icon"]) { font-family: "Open Sans", sans-serif !important; }';
				break;
			case 'login_enqueue_scripts':
				$custom_css = 'body { font-family: "Open Sans", sans-serif !important; }';
				break;
			default:
				$custom_css = 'body, #wpadminbar *:not([class="ab-icon"]), .wp-core-ui, .media-frame input, .media-frame textarea, .media-frame select { font-family: "Open Sans", sans-serif !important; }';
				break;
		}

		wp_add_inline_style($handle, $custom_css);
	}

}

add_action('plugins_loaded', array('OpenSans_FTW', 'get_instance'));
?>

Плагин заапрувили в репозитории WordPress.org под названием OpenSans FTW.

Пошерить
Плюсануть
Отправить
Вотсапнуть

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

1. Нажимая на кнопку "Отправить", я даю согласие на обработку персональных данных.

2. Для вставки кода используйте специальные теги [code lang="php"]ваш код[/code]