Respuestas:
Las caritas de contenido se convierten con:
add_filter( 'the_content', 'convert_smilies' );
donde esta parte de la convert_smilies()
función es importante:
$content = preg_replace_callback( $wp_smiliessearch, 'translate_smiley', $content );
Si echamos un vistazo translate_smiley()
, encontramos lo siguiente :
// Don't convert smilies that aren't images - they're probably emoji.
if ( ! in_array( $ext, $image_exts ) ) {
return $img;
}
antes de smilies_src
aplicar el filtro.
Por lo tanto, este filtro no está disponible en el caso de la :)
carita sonriente.
Tenemos las caritas inicializadas con:
add_action( 'init', 'smilies_init', 5 );
y dentro de la descripción de la función smilies_init()
podemos leer lo siguiente :
Los complementos pueden anular la lista de emoticones predeterminada configurando
$wpsmiliestrans
una matriz, con la clave del código que escribe el blogger y el valor del archivo de imagen.
Aquí está la $wpsmiliestrans
matriz 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",
);
o la pantalla ksorted más bonita:
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-)] => 😎
)
Entonces, si entiendo correctamente el comentario central anterior, entonces podríamos hacer lo siguiente:
/**
* :) as the cool emoji
*/
add_action( 'init', function() use ( &$wpsmiliestrans )
{
if( is_array( $wpsmiliestrans ) && get_option( 'use_smilies' ) )
$wpsmiliestrans[':)'] = $wpsmiliestrans[':cool:'];
}, 6 );
pero esto solo funciona para las teclas sonrientes predefinidas, para $wp_smiliessearch
que funcionen.
Pero no me gusta este enfoque sugerido, ¡modificar la matriz global! ¡Ojalá haya otro mejor!
Traté de encontrar una aplicación para esto. No estoy seguro si esto ya existe, pero aquí está:
<?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 );
Gracias a Ismael Miguel por el comentario global , reescribí los fragmentos en consecuencia.
Aquí está el ticket recién creado # 35905 por Pieter Goosen , con respecto a un nuevo smilies_trans
filtro.
El nuevo filtro se dispone en WordPress 4.7+, pero de nombre será smilies
no smilies_trans
.
Nuestros ejemplos anteriores se pueden escribir como:
add_filter( 'smilies', function( $smilies )
{
if( isset( $smilies[':cool:'] ) )
$smilies[':)'] = $smilies[':cool:'];
return $smilies;
} );
o explícitamente con:
add_filter( 'smilies', function( $smilies )
{
$smilies[':)'] = "\xf0\x9f\x98\x8e";
return $smilies;
} );
El complemento de demostración se convierte en:
<?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;
} );
¡Ya no necesitamos perder el tiempo con la $wpsmiliestrans
matriz global !
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?
use
palabra clave en mis respuestas aquí, pero es un buen recordatorio con respecto a los globales, gracias de nuevo (:) <- tal vez podríamos usar una carita simétrica para una mejor accesibilidad para todos @IsmaelMiguel
Según el Codex de WordPress sobre el uso de emoticones :
Sube las imágenes que quieras con el mismo nombre a tu servidor (por ejemplo, en wp-content / images / smilies) y pon esto en la función de tu tema.php:
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; }Eso reemplazará http://example.com/wp-includes/images/smilies/icon_question.gif con http://example.com/wp-content/images/smilies/icon_question.gif
3
: establecerlo 1
fallará su código como $img
, $siteurl
será ignorado y por lo tanto no estará definido en su filtro :-)