Extension

On peut ajouter au tableau de bord de Wordpress des menus qui permettent de gérer nos extensions.

Ces menus peuvent donner accès à des pages de gestion.

Extension - Menu - Page

MéthodeCréation de l'extension

On crée une extension et son contenu à l'aide d'une classe :

1
<?php
2
3
/**
4
 * Plugin Name: Ma première extension.
5
 * Description: permet de découvrir la création d'extension.
6
 * Version: 1.0.0
7
 * Author: Moi
8
 * License: GPL-3.0
9
 */
10
if (!defined('ABSPATH')) {
11
    exit;
12
}
13
14
class VV_extension
15
{
16
    public function __construct()
17
    {
18
        ...
19
    }
20
21
    public function menu()
22
    {
23
        ...
24
    }
25
26
27
    public function menu_page()
28
    {
29
       ...
30
    }
31
32
    public function page()
33
    {
34
        ...
35
    }
36
}
37
38
$vv_extension = new VV_extension();

Méthode__construct()

Le constructeur permet d'initialiser nos instances :

1
public function __construct()
2
{
3
  $this->menu();
4
}

On appelle la méthode menu.

Méthodemenu()

Le menu sera ajouté à la liste des menus au déclenchement du hook admin_menu.

1
public function menu()
2
{
3
  add_action('admin_menu', [$this, 'menu_page']);
4
}

On ajoute la méthode menu_page au hook admin_menu à l'aide de la fonction add_action. Pour des méthodes, il faut ajouter en deuxième paramètre un tableau qui contient l'objet et la méthode visée.

Méthodemenu_page()

Cette méthode permet d'ajouter et configurer notre menu. Elle sera effective au lancement du hook admin_menu.

1
public function menu_page()
2
{
3
  add_submenu_page(
4
    'tools.php',
5
    'Mon extension',
6
    'Menu de mon extension',
7
    'manage_options',
8
    'mon-menu',
9
    [$this, 'page']
10
  );
11
}

La fonction add_submenu_page permet de créer un menu et de l'ajouter à un menu parent.

1
add_submenu_page(parent_slug, page_title, menu_title, capability, menu_slug, function)
2
    

parent_slug : nom du slug ou de la page du menu parent.

page_title : texte de l'onglet du navigateur.

menu_title : texte du menu.

capability : droit qui permettent d'ouvrir le menu.

menu_slug : slug du menu.

function : nom de la fonction qui affiche le contenu de la page de notre extension.

Méthodepage()

Cette méthode permet de créer le contenu de la page de votre extension.

1
public function page()
2
{
3
  ?>
4
<h1>Voici la page de mon extension</h1>
5
  <?php
6
}

ComplémentRécupérer du contenu

Quelques exemple de codes qui permettent de récupérer du contenu. Vous pouvez l'ajouter à votre méthode page.

Liste des posts

1
<?php
2
$listePosts = get_posts();
3
?>
4
<table class="wp-list-table widefat fixed">
5
  <thead>
6
    <tr>
7
      <th class="manage-column column-primary sortable desc">Auteur</th>
8
      <th class="manage-column column-primary sortable desc">Titre</th>
9
      <th class="manage-column column-primary sortable desc">Status</th>
10
    </tr>
11
  </thead>
12
  <tbody>
13
  <?php foreach ($listePosts as $post) { ?>
14
    <tr>
15
      <td><?php echo get_the_author_meta('display_name', $post->post_author); ?></td>
16
      <td><?php echo get_the_title($post); ?></td>
17
      <td><?php echo $post->post_status; ?></td>
18
    </tr>
19
  <?php } ?>
20
  </tbody>
21
</table>

Liste des pages

1
<?php
2
$listePages = get_pages();
3
?>
4
<table class="wp-list-table widefat fixed">
5
  <thead>
6
    <tr>
7
      <th class="manage-column column-primary sortable desc">Auteur</th>
8
      <th class="manage-column column-primary sortable desc">Titre</th>
9
    </tr>
10
  </thead>
11
  <tbody>
12
  <?php foreach ($listePages as $page) { ?>
13
    <tr>
14
      <td><?php echo get_the_author_meta('display_name', $post->post_author); ?></td>
15
      <td><?php echo get_the_title($page); ?></td>
16
    </tr>
17
  <?php } ?>
18
  </tbody>
19
</table>

Liste des images

1
<?php
2
// requete
3
$query_images_args = array(
4
  'post_type' => 'attachment',
5
  'post_mime_type' => 'image',
6
  'post_status' => 'inherit',
7
  'posts_per_page' => -1,
8
);
9
10
// on lance la requete sur WP_Query
11
$listeImages = new WP_Query($query_images_args);
12
13
// liste des ids des images
14
$listeIdImages = array_map(
15
  function ($image) {
16
    return $image->ID;
17
  },
18
  $query_images->posts
19
);
20
?>
21
<h2>Les Images</h2>
22
<div>
23
<?php
24
  foreach ($listeIdImages as $id) {
25
    echo wp_get_attachment_image($id, 'large');
26
  }
27
?>
28
</div>
29