Boilerplate WordPress plugin – Añadir plugin Menú admin

Veamos cómo podemos añadir en el menú principal de nuestro panel de WordPress, una opción con nuestro plugin. Empecemos con el artículo Boilerplate WordPress plugin – Añadir plugin Menú admin.

En el artículo anterior, vimos cómo instalar y activar nuestro plugin en WordPress, pero éste no hacía nada porque no estaba todavía implementado. Vamos a hacer lo primero que debemos hacer: Añadir una opción del menú principal de WordPress para que el usuario pueda ir a nuestro plugin.

Para añadir la opción que irá a nuestro plugin en el panel de WordPress es sencillo, pero a su vez, si quieres hacer de la forma correcta en Boilerplate WordPress plugin, hay que seguir unos pasos. El resultado queremos que sea este:

¿Os habéis fijado? Al activar el plugin, se muestra la opción «Feed Directory» en el Menú principal. Al pulsar sobre él, irá a la página de trabajo de nuestro plugin. Veamos los pasos, que son 2. Tened en cuenta que mi plugin se llama Feed Directory. Cambiadlo por el vuestro.

Añadimos el Hook del admin

Demos añadir el hook del admin de la siguiente manera:

Fichero a modificar

/wp-content/plugins/feed-directory/includes/class-feed-directory.php

Buscáis en la clase, la función

private function define_admin_hooks(){
   $plugin_admin = new Feed_Directory_Admin( $this->get_plugin_name(), $this->get_version() );
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' ); 
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
}

Aquí, debemos añadirle la siguiente línea:

private function define_admin_hooks(){
   $plugin_admin = new Feed_Directory_Admin( $this->get_plugin_name(), $this->get_version() );
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_styles' ); 
  $this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts' );
  // Añadimos plugin menú principal
  $this->loader->add_action( 'admin_menu', $plugin_admin, 'add_menu' );
}

Lo que hemos hecho es añadir la función «add_menu» al hook «admin_menu». Ahora, lo que tenemos que hacer es definir la función «add_menu». Dónde y cómo a continuación:

Añadimos el menú page

Fichero a modificar:

/wp-content/plugins/feed-directory/admin/class-feed-directory-admin.php

En este fichero hay definida tres funciones: __construct(), enqueue_styles() y enqueue_scripts() y nosotros vamos a definir las que necesitamos:

class Feed_Directory_Admin {
  ...
  public function __construct( $plugin_name, $version ) { ...}
  ...
  public function enqueue_styles() {...}
  ...
  public function enqueue_scripts() {...}
  ...

  public function add_menu() {
    // add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
    add_menu_page(
      "Feed Directory",  // Título de la página
      "Feed Directory",  // Literal de la opción
      "manage_options",  // Dejadlo tal cual
      'feed-directory-index',  // Slug
      array( $this, 'feed_directory_index' ),  // Función que llama al pulsar
      plugins_url( 'feed-directory/icon.png' )  // Icono del menú
    );
  }

  public function feed_directory_index() {
    echo "Hola Mundo ";
  }
}

Lo que hemos hecho es definir la función add_menu() que habíamos indicado al delcarar el hook. Esta función añade el menú con la función add_menu_page() de la que os dejo en la parte inferior las especificaciones.

Si os fijáis, en la función add_menu_page, le pasamos la «feed_directory_index» como función que debe ejecutar si se pulsa la opción en el menú. Pues esta función es la que se declara a continuación. Lo único que hace es imprimir «Hola Mundo».

Importante: el pasarle la función a ejecutar como: array( $this, ‘feed_directory_index’) es debido a que lo hacemos desde una clase. Por youtube veréis que lo hace directamente a la función, pero cuando lo haces desde una clase, tienes que hacerlo de esta manera.

En definitiva es modificar dos ficheros y añadirles un poco de código. Activáis el plugin y veréis que se muestra la opción. Y que al pulsar sobre ella, se muestra el «Hola Mundo».

Espero que os sea de utilidad el artículo Boilerplate WordPress plugin – Añadir plugin Menú admin.


Más información