WordPress : pirater get_template_part via le plugin
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_part
ne 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.
0 commentaire