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>