관리-도구
편집 파일: PluginsHelper.php
<?php /** * PluginsHelper * * Helper class for the site's plugins. */ namespace Automattic\Kkart\Admin; defined( 'ABSPATH' ) || exit; if ( ! function_exists( 'get_plugins' ) ) { require_once KKART_ADMIN_DIR . 'includes/plugin.php'; } /** * Class PluginsHelper */ class PluginsHelper { /** * Get the path to the plugin file relative to the plugins directory from the plugin slug. * * E.g. 'kkart' returns 'kkart/kkart.php' * * @param string $slug Plugin slug to get path for. * * @return string|false */ public static function get_plugin_path_from_slug( $slug ) { $plugins = get_plugins(); if ( strstr( $slug, '/' ) ) { // The slug is already a plugin path. return $slug; } foreach ( $plugins as $plugin_path => $data ) { $path_parts = explode( '/', $plugin_path ); if ( $path_parts[0] === $slug ) { return $plugin_path; } } return false; } /** * Get an array of installed plugin slugs. * * @return array */ public static function get_installed_plugin_slugs() { return array_map( function( $plugin_path ) { $path_parts = explode( '/', $plugin_path ); return $path_parts[0]; }, array_keys( get_plugins() ) ); } /** * Get an array of active plugin slugs. * * @return array */ public static function get_active_plugin_slugs() { return array_map( function( $plugin_path ) { $path_parts = explode( '/', $plugin_path ); return $path_parts[0]; }, get_option( 'active_plugins', array() ) ); } /** * Checks if a plugin is installed. * * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name. * * @return bool */ public static function is_plugin_installed( $plugin ) { $plugin_path = self::get_plugin_path_from_slug( $plugin ); return $plugin_path ? array_key_exists( $plugin_path, get_plugins() ) : false; } /** * Checks if a plugin is active. * * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name. * * @return bool */ public static function is_plugin_active( $plugin ) { $plugin_path = self::get_plugin_path_from_slug( $plugin ); return $plugin_path ? in_array( $plugin_path, get_option( 'active_plugins', array() ), true ) : false; } /** * Get plugin data. * * @param string $plugin Path to the plugin file relative to the plugins directory or the plugin directory name. * * @return array|false */ public static function get_plugin_data( $plugin ) { $plugin_path = self::get_plugin_path_from_slug( $plugin ); $plugins = get_plugins(); return isset( $plugins[ $plugin_path ] ) ? $plugins[ $plugin_path ] : false; } }