Ce filtre n'est donc pas disponible dans le cas du :)smiley.
Nous avons les smileys initialisés avec:
add_action('init','smilies_init',5);
et dans la description de la fonction, smilies_init()nous pouvons lire ce qui suit :
Les plugins peuvent remplacer la liste de smileys par défaut en définissant le $wpsmiliestrans
sur un tableau, avec la clé du code que le blogueur tape et la valeur du fichier image.
$wpsmiliestrans = array(':mrgreen:'=>'mrgreen.png',':neutral:'=>"\xf0\x9f\x98\x90",':twisted:'=>"\xf0\x9f\x98\x88",':arrow:'=>"\xe2\x9e\xa1",':shock:'=>"\xf0\x9f\x98\xaf",':smile:'=>"\xf0\x9f\x99\x82",':???:'=>"\xf0\x9f\x98\x95",':cool:'=>"\xf0\x9f\x98\x8e",':evil:'=>"\xf0\x9f\x91\xbf",':grin:'=>"\xf0\x9f\x98\x80",':idea:'=>"\xf0\x9f\x92\xa1",':oops:'=>"\xf0\x9f\x98\xb3",':razz:'=>"\xf0\x9f\x98\x9b",':roll:'=>'rolleyes.png',':wink:'=>"\xf0\x9f\x98\x89",':cry:'=>"\xf0\x9f\x98\xa5",':eek:'=>"\xf0\x9f\x98\xae",':lol:'=>"\xf0\x9f\x98\x86",':mad:'=>"\xf0\x9f\x98\xa1",':sad:'=>"\xf0\x9f\x99\x81",'8-)'=>"\xf0\x9f\x98\x8e",'8-O'=>"\xf0\x9f\x98\xaf",':-('=>"\xf0\x9f\x99\x81",':-)'=>"\xf0\x9f\x99\x82",':-?'=>"\xf0\x9f\x98\x95",':-D'=>"\xf0\x9f\x98\x80",':-P'=>"\xf0\x9f\x98\x9b",':-o'=>"\xf0\x9f\x98\xae",':-x'=>"\xf0\x9f\x98\xa1",':-|'=>"\xf0\x9f\x98\x90",';-)'=>"\xf0\x9f\x98\x89",// This one transformation breaks regular text with frequency.// '8)' => "\xf0\x9f\x98\x8e",'8O'=>"\xf0\x9f\x98\xaf",':('=>"\xf0\x9f\x99\x81",':)'=>"\xf0\x9f\x99\x82",':?'=>"\xf0\x9f\x98\x95",':D'=>"\xf0\x9f\x98\x80",':P'=>"\xf0\x9f\x98\x9b",':o'=>"\xf0\x9f\x98\xae",':x'=>"\xf0\x9f\x98\xa1",':|'=>"\xf0\x9f\x98\x90",';)'=>"\xf0\x9f\x98\x89",':!:'=>"\xe2\x9d\x97",':?:'=>"\xe2\x9d\x93",);
Donc, si je comprends bien le commentaire de base ci-dessus, alors nous pourrions faire ce qui suit:
/**
* :) as the cool emoji
*/
add_action('init',function()use(&$wpsmiliestrans ){if( is_array( $wpsmiliestrans )&& get_option('use_smilies'))
$wpsmiliestrans[':)']= $wpsmiliestrans[':cool:'];},6);
mais cela ne fonctionne que pour les touches smiley prédéfinies, pour que le $wp_smiliessearchfonctionne.
Mais je n'aime pas cette approche suggérée, modifiant le tableau global! J'espère qu'il y en a un autre meilleur!
Plugin de démonstration - 🎅
J'ai essayé de trouver une application pour cela. Je ne sais pas si cela existe déjà, mais le voici:
<?php
/**
* Plugin Name: Santa's Smile In December
* Description: Change the emoji of :) to the Santa Claus emoji, but only in December
* Plugin URI: https://wordpress.stackexchange.com/a/218496/26350
*/
add_action('init',function()use(&$wpsmiliestrans ){// :) as Santa Clausif(
is_array( $wpsmiliestrans )&& get_option('use_smilies')&&12== current_time('n'))
$wpsmiliestrans[':)']="\xF0\x9F\x8E\x85";},6);
Merci à Ismael Miguel pour le commentaire global , j'ai réécrit les extraits en conséquence.
Voici le nouveau ticket # 35905 créé par Pieter Goosen , concernant un nouveau smilies_transfiltre.
Mise à jour - WordPress 4.7+
Le nouveau filtre sera disponible dans WordPress 4.7+, mais son nom ne le sera smiliespas smilies_trans.
<?php
/**
* Plugin Name: Santa's Smile In December
* Description: Change the emoji of :) to the Santa Claus emoji, but only in December
* Plugin URI: https://wordpress.stackexchange.com/a/218496/26350
*/
add_filter('smilies',function( $smilies ){// :) as Santa Clausif( get_option('use_smilies')&&12== current_time('n'))
$smilies[':)']="\xF0\x9F\x8E\x85";return $smilies;});
Nous n'avons plus besoin de jouer avec le $wpsmiliestranstableau global !
Les smileys fonctionneraient-ils alors avec toutes les polices?
rob_st
Étrange à quel point les smileys sont différents entre mon onglet et mon PC. :-) Quoi qu'il en soit, jip, n'aime pas non plus modifier avec des globaux, mais cela semble être le meilleur que vous puissiez tirer de cette offre. Je pense que nous pourrions envisager d'ajouter un filtre approprié dans le noyau que nous pouvons utiliser pour filtrer les smileys au lieu de modifier un global merdique. ;-)
Pieter Goosen
1
ticket trac # 35905 soumis. Permet de croiser les doigts pour obtenir un filtre approprié
Pieter Goosen
1
Et alors add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );?
Ismael Miguel
1
C'est une promesse - en fait j'utilise usebeaucoup le mot - clé dans mes réponses ici, mais c'est un bon rappel concernant les globales, merci encore (:) <- nous pourrions peut-être utiliser un smiley symétrique pour une meilleure accessibilité pour tout le monde @IsmaelMiguel
Téléchargez les images que vous voulez avec le même nom sur votre serveur (par exemple dans wp-content / images / smilies) et mettez-les dans la fonction de votre thème.php:
Vous ne savez pas pourquoi la démo du Codex suppose 10 arguments d'entrée, au lieu de 3? Mais je pense que cela est dépassé par les Emoji.
birgire
1
Je suppose que c'est censé être la priorité, donc l'ordre semble incorrect. Je l'ai changé dans le Codex, en espérant que nous ne nous sommes pas trompés :-)
rob_st
J'ai corrigé votre modification dans le codex et corrigé votre code dans votre réponse. Les arguments autorisés devraient être 3, le paramétrer sur 1fera échouer votre code comme $img, $siteurlsera ignoré et ne sera donc pas défini dans votre filtre :-)
Réponses:
Remplacer les emoji de :) en 😎
Les smileys de contenu sont convertis avec:
où cette partie de la
convert_smilies()
fonction est importante:Si nous jetons un œil,
translate_smiley()
nous trouvons ce qui suit :avant l'
smilies_src
application du filtre.Ce filtre n'est donc pas disponible dans le cas du
:)
smiley.Nous avons les smileys initialisés avec:
et dans la description de la fonction,
smilies_init()
nous pouvons lire ce qui suit :Voici le
$wpsmiliestrans
tableau global :ou l'affichage ksorted plus agréable:
Donc, si je comprends bien le commentaire de base ci-dessus, alors nous pourrions faire ce qui suit:
mais cela ne fonctionne que pour les touches smiley prédéfinies, pour que le
$wp_smiliessearch
fonctionne.Mais je n'aime pas cette approche suggérée, modifiant le tableau global! J'espère qu'il y en a un autre meilleur!
Plugin de démonstration - 🎅
J'ai essayé de trouver une application pour cela. Je ne sais pas si cela existe déjà, mais le voici:
Merci à Ismael Miguel pour le commentaire global , j'ai réécrit les extraits en conséquence.
Voici le nouveau ticket # 35905 créé par Pieter Goosen , concernant un nouveau
smilies_trans
filtre.Mise à jour - WordPress 4.7+
Le nouveau filtre sera disponible dans WordPress 4.7+, mais son nom ne le sera
smilies
passmilies_trans
.Nos exemples ci-dessus peuvent s'écrire:
ou explicitement avec:
Le plugin de démonstration devient:
Nous n'avons plus besoin de jouer avec le
$wpsmiliestrans
tableau global !la source
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?use
beaucoup le mot - clé dans mes réponses ici, mais c'est un bon rappel concernant les globales, merci encore (:) <- nous pourrions peut-être utiliser un smiley symétrique pour une meilleure accessibilité pour tout le monde @IsmaelMiguelSelon le Codex WordPress sur l'utilisation de smileys :
la source
3
, le paramétrer sur1
fera échouer votre code comme$img
,$siteurl
sera ignoré et ne sera donc pas défini dans votre filtre :-)