Created
August 10, 2016 15:49
-
-
Save igmoweb/6db4a8d9c723210b6d73daaa868eede5 to your computer and use it in GitHub Desktop.
Carga módulos obligatorios en Jetpack esté o no activado
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| class Jetpack_Mandatory_Modules { | |
| public function __construct() { | |
| $active_plugins = get_option( 'active_plugins' ); | |
| if ( ! in_array( 'jetpack/jetpack.php', $active_plugins ) ) { | |
| // Jetpack está desactivado pero lo vamos a cargar y ocultar | |
| // Cargamos el código base de Jetpack | |
| add_action( 'plugins_loaded', array( $this, 'load_base_jetpack' ) ); | |
| // Este hook marcará los módulos obligatorios como activados | |
| // aquellos obligatorios que nosotros queremos | |
| add_filter( 'pre_option_jetpack_active_modules', array( $this, 'mandatory_modules' ), 500 ); | |
| // Cargamos sólo los módulos obligatorios. Jetpack no tendrá en cuenta los demás | |
| add_filter( 'jetpack_get_available_modules', array( $this, 'mandatory_modules' ), 500 ); | |
| // Ponemos Jetpack en modo Developer. | |
| add_filter( 'jetpack_development_mode', '__return_true' ); | |
| // Y escondemos los menús de administración de Jetpack | |
| add_action( 'admin_init', array( $this, 'remove_jetpack_admin_menus' ), 500 ); | |
| } | |
| else { | |
| // Jetpack está activado pero siempre queremos tener nuestros módulos obligatorios cargados | |
| // Carga los módulos obligatorios | |
| add_action( 'plugins_loaded', array( $this, 'load_mandatory_modules' ), 100 ); | |
| // ...But remove them from the modules list, we don't need them | |
| add_filter( 'jetpack_get_available_modules', array( $this, 'remove_mandatory_modules_from_modules_list' ), 500 ); | |
| } | |
| } | |
| /** | |
| * Quita Jetpack de la lista de plugins | |
| * | |
| * @param $plugins | |
| * | |
| * @return mixed | |
| */ | |
| public function remove_jetpack_from_plugins_list( $plugins ) { | |
| if ( isset( $plugins['jetpack/jetpack.php'] ) ) { | |
| unset( $plugins['jetpack/jetpack.php'] ); | |
| } | |
| return $plugins; | |
| } | |
| /** | |
| * Carga el código base de Jetpack | |
| */ | |
| public function load_base_jetpack() { | |
| $jetpack_dir = WP_CONTENT_DIR . '/plugins/jetpack'; | |
| include_once( $jetpack_dir . '/jetpack.php' ); | |
| } | |
| /** | |
| * Módulos que siempre queremos tener cargados | |
| * | |
| * @return array | |
| */ | |
| public function mandatory_modules() { | |
| return array( | |
| 'custom-css', | |
| 'widget-visibility', | |
| 'shortcodes' | |
| ); | |
| } | |
| /** | |
| * Carga los módulos obligatorios | |
| */ | |
| public function load_mandatory_modules() { | |
| $modules = self::mandatory_modules(); | |
| foreach ( $modules as $module ) { | |
| if ( ! @include_once( Jetpack::get_module_path( $module ) ) ) { | |
| continue; | |
| } | |
| } | |
| } | |
| /** | |
| * Elimina el menú de Jetpack del escritorio de WordPress | |
| */ | |
| public function remove_jetpack_admin_menus() { | |
| remove_menu_page( 'jetpack' ); | |
| remove_submenu_page( 'jetpack', 'jetpack' ); | |
| remove_submenu_page( 'jetpack', 'jetpack_modules' ); | |
| } | |
| /** | |
| * Saca de la lista de módulos de Jetpack aquellos que son obligatorios | |
| * para que el usuario no pueda verlos ni activarlos o desactivarlos | |
| * | |
| * @param array $modules | |
| * | |
| * @return array | |
| */ | |
| public function remove_mandatory_modules_from_modules_list( $modules ) { | |
| $default_modules = $this->mandatory_modules(); | |
| $new_modules = array(); | |
| foreach ( $modules as $module => $version ) { | |
| if ( in_array( $module, $default_modules ) ) { | |
| continue; | |
| } | |
| $new_modules[ $module ] = $version; | |
| } | |
| return $new_modules; | |
| } | |
| } | |
| // Instanciamos la clase en un hook temprano | |
| // Ojo. las funciones anónimas no funcionan en PHP > 5.3 | |
| add_action( 'muplugins_loaded', function() { | |
| // Nueva instancia de nuestra clase | |
| new Jetpack_Mandatory_Modules(); | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment