J'essaie de supprimer les codes courts d'un thème enfant. Dans mon fichier functions.php (pour le thème enfant), j'ai mis:
function my_remove_shortcode(){
return '';
}
add_shortcode('entry-Twitter-link', 'my_remove_shortcode');
Où entry-Twitter-link est un shortcode créé dans le parent. Cependant, l'entrée apparaît toujours sur mes messages. Des idées sur ce qui ne va pas?
Essayez ceci. Supprimez le shortcode déjà ajouté, puis ajoutez le nouveau shortcode sur le hook d'initialisation.
function shortcode_cleaner() {
remove_shortcode( 'entry-Twitter-link' ); // Not exactly required
add_shortcode( 'entry-Twitter-link', 'my_remove_shortcode' );
}
add_action( 'init', 'shortcode_cleaner' );
function my_remove_shortcode(){
return '';
}
Merci à la réponse de Josué, et c'est en effet sauver des vies. :)
BTW, je peux proposer une méthode légèrement différente. Supposons que vous ayez créé un plugin et que vous publiiez maintenant sa version pro. Ainsi, vous avez le contrôle total sur les deux plugins. Vous pouvez ainsi suivre les étapes suivantes:
if( !function_exists('wpse36092_shortcode') {
function wpse36092_shortcode() {
echo 'This'; //existing content
}
}
add_shortcode( 'wpse36092', 'wpse36092_shortcode' );
function wpse36092_shortcode() {
echo 'That'; //overwriting content
}
add_shortcode( 'wpse36092', 'wpse36092_shortcode' );
Dans cette méthode, le nom de la fonction doit rester exactement identique.
Vous pouvez également faire la même chose dans les thèmes Parent et Enfant.
Mais encore une fois, la réponse de Josué était excellente.