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.

Méthode : Création de l'extension
On crée une extension et son contenu à l'aide d'une classe :
<?php
/** * Plugin Name: Ma première extension. * Description: permet de découvrir la création d'extension. * Version: 1.0.0 * Author: Moi * License: GPL-3.0 */if (!defined('ABSPATH')) {
exit;}
class VV_extension
{public function __construct()
{...
}
public function menu()
{...
}
public function menu_page()
{...
}
public function page()
{...
}
}
$vv_extension = new VV_extension();
Méthode : __construct()
Le constructeur permet d'initialiser nos instances :
public function __construct()
{$this->menu();
}
On appelle la méthode menu.
Méthode : menu()
Le menu sera ajouté à la liste des menus au déclenchement du hook admin_menu.
public function menu()
{add_action('admin_menu', [$this, 'menu_page']);
}
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éthode : menu_page()
Cette méthode permet d'ajouter et configurer notre menu. Elle sera effective au lancement du hook admin_menu.
public function menu_page()
{ add_submenu_page( 'tools.php', 'Mon extension', 'Menu de mon extension', 'manage_options', 'mon-menu',[$this, 'page']
);
}
La fonction add_submenu_page permet de créer un menu et de l'ajouter à un menu parent.
add_submenu_page(parent_slug, page_title, menu_title, capability, menu_slug, function)
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éthode : page()
Cette méthode permet de créer le contenu de la page de votre extension.
public function page()
{ ?><h1>Voici la page de mon extension</h1>
<?php
}
Complément : Ré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
<?php
$listePosts = get_posts();
?><table class="wp-list-table widefat fixed">
<thead>
<tr>
<th class="manage-column column-primary sortable desc">Auteur</th>
<th class="manage-column column-primary sortable desc">Titre</th>
<th class="manage-column column-primary sortable desc">Status</th>
</tr>
</thead>
<tbody>
<?php foreach ($listePosts as $post) { ?>
<tr>
<td><?php echo get_the_author_meta('display_name', $post->post_author); ?></td>
<td><?php echo get_the_title($post); ?></td>
<td><?php echo $post->post_status; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
Liste des pages
<?php
$listePages = get_pages();
?><table class="wp-list-table widefat fixed">
<thead>
<tr>
<th class="manage-column column-primary sortable desc">Auteur</th>
<th class="manage-column column-primary sortable desc">Titre</th>
</tr>
</thead>
<tbody>
<?php foreach ($listePages as $page) { ?>
<tr>
<td><?php echo get_the_author_meta('display_name', $post->post_author); ?></td>
<td><?php echo get_the_title($page); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
Liste des images
<?php
// requete$query_images_args = array(
'post_type' => 'attachment',
'post_mime_type' => 'image',
'post_status' => 'inherit',
'posts_per_page' => -1,
);
// on lance la requete sur WP_Query$listeImages = new WP_Query($query_images_args);
// liste des ids des images$listeIdImages = array_map(
function ($image) {
return $image->ID;
},
$query_images->posts
);
?><h2>Les Images</h2>
<div>
<?php
foreach ($listeIdImages as $id) {
echo wp_get_attachment_image($id, 'large');
}
?></div>