WordPress : pirater get_template_part via le plugin

Publié par Jean-Michel le

J’essaie de faire un plugin qui va changer le comportement d’un thème.

Dans le fichier de thème, j’ai un get_template_part(‘libs/templates/user_menu’);

Je veux que mon plugin « force » le get_template_part à renvoyer un autre fichier slug (un chemin vers un fichier dans le dossier du plugin).

Jusqu’à présent, voici mon code à l’intérieur du plugin :

function wpse21352_template_part_cb( $slug )
{
   if(slug == 'user_menu') {
     return WP_PLUGIN_URL.'/'.$slug;
   } else {
     return $slug;
   }
}

do_action( "get_template_part_user_menu", 'user_menu' );
add_action( 'wpse21352_template_part_cb', 'get_template_part_user_menu', 10, 1 );

Solution n°1 trouvée

Tout d’abord, get_template_partne renvoie rien. Il charge un fichier à partir de votre thème en fonction des paramètres que vous lui transmettez. La fonction ne prend pas en charge le filtrage, ce qui signifie que vous ne pouvez pas réellement écraser ce qui est généré par get_template_part.

La seule chose que l’action get_template_part_[slug]vous permet de faire est de sortir quelque chose avant que le fichier de thème ne soit chargé. Par exemple, en utilisant

function myplugin_before_login( $slug, $name ) {
    echo 'Example';
}

add_action( 'get_template_part_login', 'myplugin_before_login', 10, 2 );

afficherait « Exemple » avant le chargement du fichier de thème lors de l’appel de get_template_part( 'login' );.

Actions et filtres

En général, cependant, je pense que vous pourriez mal comprendre le fonctionnement des actions et des filtres. Le WordPress Codex offre des informations détaillées sur leur utilisation et leur utilisation.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *