Mostrar una carita diferente al ingresar ":)"


9

Si ingresas :)en WordPress, lo reemplaza automáticamente con:

ingrese la descripción de la imagen aquí

¿Hay alguna manera de usar una carita diferente para :)


Hola krish, ¿podrías proporcionar más detalles sobre lo que ya has probado (y por qué no funcionó)?
— kraftner

Respuestas:


14

Anulando el emoji de :) a 😎

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_srcaplicar 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 $wpsmiliestransmatriz 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_smiliessearchque funcionen.

Pero no me gusta este enfoque sugerido, ¡modificar la matriz global! ¡Ojalá haya otro mejor!

Complemento de demostración - 🎅

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_transfiltro.

Actualización - WordPress 4.7+

El nuevo filtro se dispone en WordPress 4.7+, pero de nombre será smiliesno 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 $wpsmiliestransmatriz global !


¿Funcionarían los emoticones con cada fuente entonces?
— rob_st

Es extraño lo diferentes que se ven los emoticones entre mi pestaña y mi PC. :-) De todos modos, jip, tampoco me gusta modificar con globals, pero esto parece lo mejor que vas a obtener de este trato. Creo que podríamos considerar agregar un filtro adecuado en el núcleo que podamos usar para filtrar emoticones en lugar de alterar un global de mierda. ;-)
— Pieter Goosen

1
boleto de trác # 35905 enviado. Vamos a cruzar los dedos para obtener un filtro adecuado
— Pieter Goosen

1
¿Qué tal add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );?
— Ismael Miguel

1
Es una promesa: en realidad uso mucho la usepalabra 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
— birgire

3

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


¿No está seguro de por qué la demostración del Codex está asumiendo 10 argumentos de entrada, en lugar de 3? Pero creo que esto es anulado por los Emoji.
— Birgire

1
Supongo que está destinado a ser la prioridad, por lo que el orden parece incorrecto. Lo cambié en el Codex, esperando no equivocarnos :-)
— rob_st

He corregido su edición en el códice y corregido su código en su respuesta. Los argumentos permitidos deberían ser 3: establecerlo 1fallará su código como $img, $siteurlserá ignorado y por lo tanto no estará definido en su filtro :-)
— Pieter Goosen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.