Więc ten filtr nie jest dostępny w przypadku :)buźki.
Uśmieszki zainicjowaliśmy za pomocą:
add_action('init','smilies_init',5);
oraz w opisie funkcji dla smilies_init()możemy przeczytać następujące :
Wtyczki mogą zastąpić domyślną listę emotikonów, ustawiając na $wpsmiliestrans
tablicę, z kluczem, w którym wpisuje się blogger, i wartością pliku obrazu.
$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",);
Więc jeśli poprawnie zrozumiem powyższy podstawowy komentarz, moglibyśmy wykonać następujące czynności:
/**
* :) as the cool emoji
*/
add_action('init',function()use(&$wpsmiliestrans ){if( is_array( $wpsmiliestrans )&& get_option('use_smilies'))
$wpsmiliestrans[':)']= $wpsmiliestrans[':cool:'];},6);
ale działa to tylko w przypadku predefiniowanych emotikonów, $wp_smiliessearchaby działały.
Ale nie podoba mi się to sugerowane podejście, modyfikujące globalną tablicę! Mam nadzieję, że jest jeszcze jeden lepszy!
Wtyczka demonstracyjna - 🎅
Próbowałem wymyślić taką aplikację. Nie jestem pewien, czy to już istnieje, ale oto:
<?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);
Dzięki Ismaelowi Miguelowi za komentarz globalny przepisałem odpowiednio fragmenty kodu .
<?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;});
Nie musimy już więcej bawić się z globalną $wpsmiliestranstablicą!
Czy wtedy emotikony będą działać z każdą czcionką?
rob_st
Dziwne, jak różne buźki wyglądają między moją zakładką a komputerem. :-) W każdym razie, jip, również nie lubię modyfikować za pomocą globałów, ale wydaje się, że to najlepsze, co możesz zrobić z tej umowy. Myślę, że powinniśmy rozważyć dodanie odpowiedniego filtra w rdzeniu, którego możemy użyć do filtrowania emotikonów zamiast zmieniania gównianego globu. ;-)
Jak o add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );?
Ismael Miguel
1
To obietnica - właściwie używam usesłowa kluczowego w moich odpowiedziach tutaj, ale to dobre przypomnienie dotyczące globaliów, jeszcze raz dziękuję (:) <- może moglibyśmy użyć symetrycznej buźki dla lepszej dostępności dla wszystkich @IsmaelMiguel
Nie wiesz, dlaczego demo Kodeksu zakłada 10 argumentów wejściowych zamiast 3? Ale myślę, że jest to nadpisane przez emoji.
birgire,
1
Przypuszczam, że ma to być priorytet, więc kolejność wydaje się nieprawidłowa. Zmieniłem go w Kodeksie, mając nadzieję, że nie pomyliliśmy się :-)
rob_st
Poprawiłem twoją edycję w kodeksie i poprawiłem twój kod w twojej odpowiedzi. Dozwolone argumenty powinny być 3ustawienie go 1zawiedzie kod jak $img, $siteurlbędą ignorowane i będzie dla nich być zdefiniowana w filtrze :-)
Odpowiedzi:
Przesłanianie emoji :) do 😎
Emotikony treści są konwertowane za pomocą:
gdzie ta część z
convert_smilies()
funkcji ma znaczenie:Jeśli zajrzymy do niego
translate_smiley()
, znajdziemy następujące :przed zastosowaniem
smilies_src
filtra.Więc ten filtr nie jest dostępny w przypadku
:)
buźki.Uśmieszki zainicjowaliśmy za pomocą:
oraz w opisie funkcji dla
smilies_init()
możemy przeczytać następujące :Oto globalna
$wpsmiliestrans
tablica:lub ładniejszy ksorted wyświetlacz:
Więc jeśli poprawnie zrozumiem powyższy podstawowy komentarz, moglibyśmy wykonać następujące czynności:
ale działa to tylko w przypadku predefiniowanych emotikonów,
$wp_smiliessearch
aby działały.Ale nie podoba mi się to sugerowane podejście, modyfikujące globalną tablicę! Mam nadzieję, że jest jeszcze jeden lepszy!
Wtyczka demonstracyjna - 🎅
Próbowałem wymyślić taką aplikację. Nie jestem pewien, czy to już istnieje, ale oto:
Dzięki Ismaelowi Miguelowi za komentarz globalny przepisałem odpowiednio fragmenty kodu .
Oto nowo utworzony bilet nr 35905 autorstwa Pietera Goosena dotyczący nowego
smilies_trans
filtra.Aktualizacja - WordPress 4.7+
Nowy filtr będzie dostępny w WordPress 4.7+, ale to imię będzie
smilies
niesmilies_trans
.Nasze powyższe przykłady można zapisać jako:
lub wyraźnie za pomocą:
Wtyczka demonstracyjna staje się:
Nie musimy już więcej bawić się z globalną
$wpsmiliestrans
tablicą!źródło
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?use
słowa kluczowego w moich odpowiedziach tutaj, ale to dobre przypomnienie dotyczące globaliów, jeszcze raz dziękuję (:) <- może moglibyśmy użyć symetrycznej buźki dla lepszej dostępności dla wszystkich @IsmaelMiguelZgodnie z kodeksem WordPress dotyczącym używania emotikonów :
źródło
3
ustawienie go1
zawiedzie kod jak$img
,$siteurl
będą ignorowane i będzie dla nich być zdefiniowana w filtrze :-)