Ajouter un lien “Réglages” dans la page des extensions
Ce tutoriel est dédié aux développeurs de plugins WordPress qui souhaitent insérer un « lien d’action » permettant d’accéder à la page des options d’un plugin grâce à un lien « Réglages ».
Ce tutoriel sera utile aux développeurs de plugin WordPress. Quand on se trouve dans la page des extensions, on va insérer un lien que j’appelle “lien d’action” sur la ligne correspondant à l’extension. Ce lien permet d’accéder à la page des options de l’extension grâce à un lien “Réglages” ! On en profitera pour voir comment insérer d’autres liens aux côtés de ceux que j’appelle “lien colonne” vers la page de plugin, de l’auteur, de la version etc…
Liens actions
Pour ajouter des liens ici pour votre plugin, c’est assez simple :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
function baw_settings_action_links( $links, $file ) {
// lien vers les widgets
$mylink = '<a href="' . admin_url( 'widgets.php' ) . '">' . __( 'Widgets' ) . '</a>';
array_push( $links, $mylink );
// liens vers les articles
$links[] = '<a href="' . admin_url( 'edit.php' ) . '">' . __( 'Posts' ) . '</a>';
// lien vers la page de config de ce plugin
array_unshift( $links, '<a href="' . admin_url( 'admin.php?page=bawcco_settings' ) . '">' . __( 'Settings' ) . '</a>' );
return $links;
}
add_filter( 'plugin_action_links_'.plugin_basename( __FILE__ ), 'baw_settings_action_links', 10, 2 );
[/pastacode]
Le hook utilisé est plugin_action_links_'.$file
ce qui signifie que seul notre plugin aura ces liens.
Ha, vous aurez remarqué que j’utilise 2 façons d’ajouter un lien, le but est d’ajouter des liens devant et derrière les actions par défaut. Aussi, nul besoin de créer de la traduction, j’utilise les mots que WordPress a déjà traduit.
Ajouter le lien avant les autres
array_unshift()
est une fonction PHP qui permet d’ajouter un élément en première position dans un tableau.
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
// lien vers la page de config de ce plugin
array_unshift( $links, '<a href="' . admin_url( 'admin.php?page=bawcco_settings' ) . '">' . __( 'Settings' ) . '</a>' );
[/pastacode]
Ajouter un lien après les autres
array_push()
est une fonction PHP qui permet d’ajouter un ou plusieurs éléments en fin de tableau. Néanmoins, elle nécessite de passer une variable en paramètre et non pas une chaîne. Il est aussi possible d’ajouter des éléments en utilisant directement les doubles crochets.
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
// lien vers les widgets
$mylink = '<a href="' . admin_url( 'widgets.php' ) . '">' . __( 'Widgets' ) . '</a>';
array_push( $links, $mylink );
// liens vers les articles
$links[] = '<a href="' . admin_url( 'edit.php' ) . '">' . __( 'Posts' ) . '</a>';
[/pastacode]
Liens colonnes
Ces emplacements peuvent être utilisés pour ajouter des liens vers vos autres plugins, services ou autre gentille publicité.
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
function bawcco_plugin_row_meta( $links, $file ) {
// si c'est bien le fichier de notre plugin que WordPress est en train de traiter
if ( strstr( __FILE__, $file ) != '' )
$links[] = '<a target="_blank" href="http://www.boiteaweb.fr/msl">' . __( 'Protect your login page now!', 'bawcco' ) . '</a>';
return $links;
}
add_filter( 'plugin_row_meta', 'bawcco_plugin_row_meta', 100, 2 );
[/pastacode]
Contrairement aux liens d’actions, le hook plugin_row_meta
ne contient pas le fichier du plugin, dommage ! Nous devons donc ajouter une condition, sinon ce lien sera affiché sur tous les plugins. Nous vérifions si le nom de notre fichier est celui traité par WordPress.
That’s all!
Voilà, vous savez ajouter des liens sympathiques et pas cher dans vos plugins.
Petits clins d’oeil à mon plugin “More Secure Login” et à celui de @ScreenFeedFR qui est SF Archiver (j’ai volontairement ajouté des liens dans son screenshot pour la démo, le plugin officiel ne contient que “Réglages”).
5 Commentaires
Hello,
Merci Julio !
Je ne procède par de la même manière pour les “liens actions”: J’utilise le filtre non spécifique au fichier de plugin, du coup je m’embête à faire un contrôle à l’intérieur.
Mais ça revient au même au final. Par contre je vais mettre à jour mon code, je trouve le tien bien plus propre.
Merci pour le partage !
De rien l’ami (oui je lag, je réponds 1 mois après) ;)
une petite erreur dans la partie colonne :
if ( strstr( plugin_basename(__FILE__), $file ) != ” )
et non
if ( strstr( __FILE__, $file ) != ” )
@leo : nonon le code fonctionne parfaitement, testé sur un 3.9 à l’instant. Tu as testé et ça ne fonctionne pas ??
bonjour,
j’aimerais savoir comment ajouter dans la page d’accueil du plugin ( créée par la méthode add_menu_page…), un lien qui point vers une autre page dans le même plugin.
par exemple j’ai un tableau dans la page par défaut de plugin et dans ce tableau un href pour afficher les details.
merci d’avance