$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",);
Jadi jika saya memahami dengan benar komentar inti di atas, maka kita dapat melakukan hal berikut:
/**
* :) as the cool emoji
*/
add_action('init',function()use(&$wpsmiliestrans ){if( is_array( $wpsmiliestrans )&& get_option('use_smilies'))
$wpsmiliestrans[':)']= $wpsmiliestrans[':cool:'];},6);
tetapi ini hanya berfungsi untuk kunci smiley yang telah ditentukan, untuk $wp_smiliessearchbekerja.
Tapi saya tidak suka pendekatan yang disarankan ini, memodifikasi array global! Semoga ada satu lagi yang lebih baik!
Plugin demo - 🎅
Saya mencoba membuat aplikasi untuk ini. Saya tidak yakin apakah ini sudah ada, tetapi ini dia:
<?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);
Terima kasih kepada Ismael Miguel atas komentar globalnya , saya menulis ulang cuplikannya.
Berikut baru dibuat tiket # 35.905 oleh Pieter Goosen , mengenai baru smilies_transfilter.
Perbarui - WordPress 4.7+
Filter baru akan tersedia di WordPress 4.7+, tetapi namanya smiliestidak 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;});
Kita tidak perlu dipusingkan dengan $wpsmiliestransarray global lagi!
Aneh betapa berbedanya tampilan smiley antara tab dan pc saya. :-) Bagaimanapun, jip, juga tidak suka memodifikasi dengan global, tapi ini sepertinya yang terbaik yang akan Anda dapatkan dari kesepakatan ini. Saya pikir kita mungkin melihat ke dalam menambahkan filter yang tepat dalam inti yang dapat kita gunakan untuk memfilter smiley alih-alih mengubah global yang jelek. ;-)
Pieter Goosen
1
tiket trac # 35905 dikirimkan. Mari kita menyilangkan jari yang kita dapatkan filter yang tepat
Pieter Goosen
1
Bagaimana dengan add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );?
Ismael Miguel
1
Ini adalah janji - sebenarnya saya sering menggunakan usekata kunci dalam jawaban saya di sini, tetapi ini adalah pengingat yang baik mengenai global, terima kasih lagi (:) <- mungkin kita bisa menggunakan smiley simetris untuk aksesibilitas yang lebih baik untuk semua orang @IsmaelMiguel
Unggah gambar yang Anda inginkan dengan nama yang sama ke server Anda (katakanlah di wp-content / images / smilies) dan letakkan ini di function.php tema Anda:
Tidak yakin mengapa demo Codex mengasumsikan 10 argumen input, bukan 3? Tapi saya pikir ini ditimpa oleh Emoji.
birgire
1
Saya kira itu dimaksudkan sebagai prioritas, sehingga urutannya keliru. Saya mengubahnya di Codex, berharap kami tidak salah :-)
rob_st
Saya telah memperbaiki hasil edit Anda dalam kodeks dan mengoreksi kode Anda dalam jawaban Anda. Argumen yang dibolehkan seharusnya 3, mengaturnya agar 1kode Anda gagal $img, $siteurlakan diabaikan dan karenanya tidak akan ditentukan dalam filter Anda :-)
Jawaban:
Mengganti emoji :) ke 😎
Konten smilies dikonversi dengan:
di mana bagian dari
convert_smilies()
fungsi ini sangat penting:Jika kita mengintip ke dalam
translate_smiley()
maka kita menemukan yang berikut :sebelum
smilies_src
filter diterapkan.Jadi filter ini tidak tersedia untuk
:)
smiley.Kami memiliki smilies yang diinisialisasi dengan:
dan dalam deskripsi fungsi untuk
smilies_init()
kita dapat membaca yang berikut :Inilah
$wpsmiliestrans
susunan global :atau tampilan ksorted yang lebih bagus:
Jadi jika saya memahami dengan benar komentar inti di atas, maka kita dapat melakukan hal berikut:
tetapi ini hanya berfungsi untuk kunci smiley yang telah ditentukan, untuk
$wp_smiliessearch
bekerja.Tapi saya tidak suka pendekatan yang disarankan ini, memodifikasi array global! Semoga ada satu lagi yang lebih baik!
Plugin demo - 🎅
Saya mencoba membuat aplikasi untuk ini. Saya tidak yakin apakah ini sudah ada, tetapi ini dia:
Terima kasih kepada Ismael Miguel atas komentar globalnya , saya menulis ulang cuplikannya.
Berikut baru dibuat tiket # 35.905 oleh Pieter Goosen , mengenai baru
smilies_trans
filter.Perbarui - WordPress 4.7+
Filter baru akan tersedia di WordPress 4.7+, tetapi namanya
smilies
tidaksmilies_trans
.Contoh kami di atas dapat ditulis sebagai:
atau secara eksplisit dengan:
Plugin demo menjadi:
Kita tidak perlu dipusingkan dengan
$wpsmiliestrans
array global lagi!sumber
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?use
kata kunci dalam jawaban saya di sini, tetapi ini adalah pengingat yang baik mengenai global, terima kasih lagi (:) <- mungkin kita bisa menggunakan smiley simetris untuk aksesibilitas yang lebih baik untuk semua orang @IsmaelMiguelMenurut Codex WordPress tentang penggunaan smilies :
sumber
3
, mengaturnya agar1
kode Anda gagal$img
,$siteurl
akan diabaikan dan karenanya tidak akan ditentukan dalam filter Anda :-)