Daher ist dieser Filter beim :)Smiley nicht verfügbar .
Wir haben die Smilies initialisiert mit:
add_action('init','smilies_init',5);
und innerhalb der Funktionsbeschreibung für können smilies_init()wir folgendes lesen :
Plugins können die Standard-Smiley-Liste überschreiben, indem sie $wpsmiliestrans
auf ein Array setzen, mit dem Schlüssel den Code, den der Blogger eingibt, und dem Wert der Bilddatei.
$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",);
Wenn ich den obigen Kernkommentar richtig verstehe, können wir Folgendes tun:
/**
* :) as the cool emoji
*/
add_action('init',function()use(&$wpsmiliestrans ){if( is_array( $wpsmiliestrans )&& get_option('use_smilies'))
$wpsmiliestrans[':)']= $wpsmiliestrans[':cool:'];},6);
Dies funktioniert jedoch nur für vordefinierte Smiley-Schlüssel, damit $wp_smiliessearchdiese funktionieren.
Aber ich mag diesen vorgeschlagenen Ansatz nicht, das globale Array zu modifizieren! Hoffentlich gibt es noch einen besseren!
Demo-Plugin - 🎅
Ich habe versucht, eine Bewerbung dafür zu finden. Ich bin nicht sicher, ob dies bereits existiert, aber hier ist es:
<?php/**
* Plugin Name: Santa's Smile In December
* Description: Change the emoji of :) to the Santa Claus emoji, but only in December
* Plugin URI: /wordpress//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);
Dank Ismael Miguel für den globalen Kommentar habe ich die Schnipsel entsprechend umgeschrieben.
Hier ist das neu erstellte Ticket # 35905 von Pieter Goosen zu einem neuen smilies_transFilter.
Update - WordPress 4.7+
Der neue Filter wird in WordPress 4.7+ verfügbar sein, der Name jedoch smiliesnicht smilies_trans.
Unsere obigen Beispiele können wie folgt geschrieben werden:
<?php/**
* Plugin Name: Santa's Smile In December
* Description: Change the emoji of :) to the Santa Claus emoji, but only in December
* Plugin URI: /wordpress//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;});
Wir müssen nicht $wpsmiliestransmehr mit dem globalen Array herumspielen!
Würden die Smilies dann mit jeder Schriftart funktionieren?
Rob_st
Seltsam, wie unterschiedlich die Smileys zwischen meinem Tab und meinem PC aussehen. :-) Wie auch immer, jip, mag es auch nicht, mit Globals zu modifizieren, aber das scheint das Beste zu sein, was du aus diesem Deal herausholen wirst. Ich denke, wir könnten versuchen, einen geeigneten Filter im Kern hinzuzufügen, mit dem wir Smileys filtern können, anstatt eine beschissene globale zu ändern. ;-)
Pieter Goosen
1
Trac Ticket # 35905 eingereicht. Drücken wir die Daumen, dass wir einen richtigen Filter bekommen
Pieter Goosen
1
Wie wäre es add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );?
Ismael Miguel
1
Es ist ein Versprechen - eigentlich verwende ich das useSchlüsselwort häufig in meinen Antworten hier, aber es ist eine gute Erinnerung an die Globals, nochmals vielen Dank (:) <- vielleicht könnten wir einen symmetrischen Smiley für eine bessere Zugänglichkeit für alle verwenden @IsmaelMiguel
Laden Sie die gewünschten Bilder mit demselben Namen auf Ihren Server hoch (z. B. in wp-content / images / smilies) und fügen Sie diese in die function.php Ihres Themas ein:
Sie sind sich nicht sicher, warum die Codex-Demo 10 Eingabeargumente anstelle von 3 annimmt? Aber ich denke, das wird von den Emoji außer Kraft gesetzt.
Birgire
1
Ich nehme an, es soll die Priorität sein, daher scheint die Reihenfolge falsch zu sein. Ich habe es im Codex geändert, in der Hoffnung, dass wir es nicht falsch verstanden haben :-)
rob_st
Ich habe Ihre Bearbeitung im Codex korrigiert und Ihren Code in Ihrer Antwort korrigiert. Die erlaubten Argumente sollten sein 3, wenn Sie 1festlegen, dass Ihr Code als fehlschlägt $img, $siteurlignoriert wird und daher in Ihrem Filter undefiniert ist :-)
Antworten:
Überschreiben des Emoji von :) zu 😎
Die Inhalts-Smilies werden konvertiert mit:
wo dieser Teil der
convert_smilies()
Funktion von Bedeutung ist:Wenn wir hineinschauen
translate_smiley()
, finden wir Folgendes :bevor der
smilies_src
Filter angewendet wird.Daher ist dieser Filter beim
:)
Smiley nicht verfügbar .Wir haben die Smilies initialisiert mit:
und innerhalb der Funktionsbeschreibung für können
smilies_init()
wir folgendes lesen :Hier ist das globale
$wpsmiliestrans
Array:oder das schönere ksortierte Display:
Wenn ich den obigen Kernkommentar richtig verstehe, können wir Folgendes tun:
Dies funktioniert jedoch nur für vordefinierte Smiley-Schlüssel, damit
$wp_smiliessearch
diese funktionieren.Aber ich mag diesen vorgeschlagenen Ansatz nicht, das globale Array zu modifizieren! Hoffentlich gibt es noch einen besseren!
Demo-Plugin - 🎅
Ich habe versucht, eine Bewerbung dafür zu finden. Ich bin nicht sicher, ob dies bereits existiert, aber hier ist es:
Dank Ismael Miguel für den globalen Kommentar habe ich die Schnipsel entsprechend umgeschrieben.
Hier ist das neu erstellte Ticket # 35905 von Pieter Goosen zu einem neuen
smilies_trans
Filter.Update - WordPress 4.7+
Der neue Filter wird in WordPress 4.7+ verfügbar sein, der Name jedoch
smilies
nichtsmilies_trans
.Unsere obigen Beispiele können wie folgt geschrieben werden:
oder explizit mit:
Das Demo-Plugin wird:
Wir müssen nicht
$wpsmiliestrans
mehr mit dem globalen Array herumspielen!quelle
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?use
Schlüsselwort häufig in meinen Antworten hier, aber es ist eine gute Erinnerung an die Globals, nochmals vielen Dank (:) <- vielleicht könnten wir einen symmetrischen Smiley für eine bessere Zugänglichkeit für alle verwenden @IsmaelMiguelLaut dem WordPress-Codex zur Verwendung von Smilies :
quelle
3
, wenn Sie1
festlegen, dass Ihr Code als fehlschlägt$img
,$siteurl
ignoriert wird und daher in Ihrem Filter undefiniert ist :-)