Jawaban:
Konten smilies dikonversi dengan:
add_filter( 'the_content', 'convert_smilies' );
di mana bagian dari convert_smilies()
fungsi ini sangat penting:
$content = preg_replace_callback( $wp_smiliessearch, 'translate_smiley', $content );
Jika kita mengintip ke dalam translate_smiley()
maka kita menemukan yang berikut :
// Don't convert smilies that aren't images - they're probably emoji.
if ( ! in_array( $ext, $image_exts ) ) {
return $img;
}
sebelum smilies_src
filter diterapkan.
Jadi filter ini tidak tersedia untuk :)
smiley.
Kami memiliki smilies yang diinisialisasi dengan:
add_action( 'init', 'smilies_init', 5 );
dan dalam deskripsi fungsi untuk smilies_init()
kita dapat membaca yang berikut :
Plugin dapat menimpa daftar smiley default dengan mengatur
$wpsmiliestrans
ke array, dengan kunci kode blogger ketik dan nilai file gambar.
Inilah $wpsmiliestrans
susunan global :
$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",
);
atau tampilan ksorted yang lebih bagus:
Array
(
[;-)] => ๐
[;)] => ๐
[:|] => ๐
[:x] => ๐ก
[:wink:] => ๐
[:twisted:] => ๐
[:smile:] => ๐
[:shock:] => ๐ฏ
[:sad:] => ๐
[:roll:] => rolleyes.png
[:razz:] => ๐
[:oops:] => ๐ณ
[:o] => ๐ฎ
[:neutral:] => ๐
[:mrgreen:] => mrgreen.png
[:mad:] => ๐ก
[:lol:] => ๐
[:idea:] => ๐ก
[:grin:] => ๐
[:evil:] => ๐ฟ
[:eek:] => ๐ฎ
[:cry:] => ๐ฅ
[:cool:] => ๐
[:arrow:] => โก
[:P] => ๐
[:D] => ๐
[:???:] => ๐
[:?:] => โ
[:?] => ๐
[:-|] => ๐
[:-x] => ๐ก
[:-o] => ๐ฎ
[:-P] => ๐
[:-D] => ๐
[:-?] => ๐
[:-)] => ๐
[:-(] => ๐
[:)] => ๐
[:(] => ๐
[:!:] => โ
[8O] => ๐ฏ
[8-O] => ๐ฏ
[8-)] => ๐
)
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_smiliessearch
bekerja.
Tapi saya tidak suka pendekatan yang disarankan ini, memodifikasi array global! Semoga ada satu lagi yang lebih baik!
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 Claus
if(
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_trans
filter.
Filter baru akan tersedia di WordPress 4.7+, tetapi namanya smilies
tidak smilies_trans
.
Contoh kami di atas dapat ditulis sebagai:
add_filter( 'smilies', function( $smilies )
{
if( isset( $smilies[':cool:'] ) )
$smilies[':)'] = $smilies[':cool:'];
return $smilies;
} );
atau secara eksplisit dengan:
add_filter( 'smilies', function( $smilies )
{
$smilies[':)'] = "\xf0\x9f\x98\x8e";
return $smilies;
} );
Plugin demo menjadi:
<?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 Claus
if( get_option( 'use_smilies' ) && 12 == current_time( 'n' ) )
$smilies[':)'] = "\xF0\x9F\x8E\x85";
return $smilies;
} );
Kita tidak perlu dipusingkan dengan $wpsmiliestrans
array global lagi!
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 @IsmaelMiguel
Menurut Codex WordPress tentang penggunaan smilies :
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:
add_filter ('smilies_src', 'my_custom_smilies_src', 10, 3); function my_custom_smilies_src ($ img_src, $ img, $ siteurl) { return $ siteurl. '/ wp-content / images / smilies /'.$ img; }Itu akan menggantikan http://example.com/wp-includes/images/smilies/icon_question.gif dengan http://example.com/wp-content/images/smilies/icon_question.gif
3
, mengaturnya agar 1
kode Anda gagal $img
, $siteurl
akan diabaikan dan karenanya tidak akan ditentukan dalam filter Anda :-)