Так что этот фильтр недоступен в случае :)смайлика.
У нас есть смайлики, инициализированные:
add_action('init','smilies_init',5);
и в описании функции для smilies_init()мы можем прочитать следующее :
Плагины могут переопределять список смайликов по умолчанию, устанавливая $wpsmiliestrans
массив с ключом, кодом, который вводит блоггер, и значением файла изображения.
$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",);
Так что, если я правильно понимаю приведенный выше основной комментарий, мы можем сделать следующее:
/**
* :) as the cool emoji
*/
add_action('init',function()use(&$wpsmiliestrans ){if( is_array( $wpsmiliestrans )&& get_option('use_smilies'))
$wpsmiliestrans[':)']= $wpsmiliestrans[':cool:'];},6);
но это работает только для предопределенных ключей смайлика, $wp_smiliessearchчтобы работать.
Но мне не нравится этот предложенный подход, модифицирующий глобальный массив! Надеюсь, есть еще один лучше!
Демо-плагин - 🎅
Я пытался придумать приложение для этого. Я не уверен, что это уже существует, но вот оно:
<?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);
Спасибо Исмаилу Мигелю за глобальный комментарий , я соответственно переписал фрагменты.
Вот недавно созданный билет # 35905 от Питера Goosen , относительно нового smilies_transфильтра.
Обновление - WordPress 4.7+
Новый фильтр будет доступен в WordPress 4.7+, но это название будет smiliesне 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;});
Нам больше не нужно возиться с глобальным $wpsmiliestransмассивом!
Странно, как разные смайлики выглядят между моей вкладкой и компьютером. :-) В любом случае, джип, также не нравится модифицировать с глобалами, но это, похоже, лучшее, что вы собираетесь получить из этой сделки. Я думаю, что мы могли бы посмотреть на добавление правильного фильтра в ядре, который мы можем использовать для фильтрации смайликов вместо того, чтобы изменять дрянной глобал. ;-)
Питер Гусен
1
Трек билет № 35905 отправлен. Давайте скрестим пальцы, что мы получим надлежащий фильтр
Питер Гусен
1
Как насчет add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );?
Исмаэль Мигель
1
Это обещание - на самом деле я часто использую useключевое слово в своих ответах здесь, но это хорошее напоминание о глобалах, еще раз спасибо (:) <- возможно, мы могли бы использовать симметричный смайлик для лучшей доступности для всех @IsmaelMiguel
Не знаете, почему в кодексе Кодекса предполагается 10 входных аргументов вместо 3? Но я думаю, что это отменяется эмодзи.
birgire
1
Я предполагаю, что это должно быть приоритетом, поэтому порядок кажется неправильным. Я изменил это в Кодексе, надеясь, что мы не ошиблись :-)
rob_st
Я исправил ваши изменения в кодексе и исправил ваш код в вашем ответе. Допустимые аргументы должны быть 3, установив его 1не получится код , как $img, $siteurlбудут игнорироваться и для этого будет определено в фильтре :-)
Ответы:
Переопределение смайликов :) к 😎
Содержимое смайликов конвертируется с помощью:
где эта часть из
convert_smilies()
функции имеет значение:Если мы заглянем в,
translate_smiley()
то мы найдем следующее :до применения
smilies_src
фильтра.Так что этот фильтр недоступен в случае
:)
смайлика.У нас есть смайлики, инициализированные:
и в описании функции для
smilies_init()
мы можем прочитать следующее :Вот глобальный
$wpsmiliestrans
массив:или лучший ксортированный дисплей:
Так что, если я правильно понимаю приведенный выше основной комментарий, мы можем сделать следующее:
но это работает только для предопределенных ключей смайлика,
$wp_smiliessearch
чтобы работать.Но мне не нравится этот предложенный подход, модифицирующий глобальный массив! Надеюсь, есть еще один лучше!
Демо-плагин - 🎅
Я пытался придумать приложение для этого. Я не уверен, что это уже существует, но вот оно:
Спасибо Исмаилу Мигелю за глобальный комментарий , я соответственно переписал фрагменты.
Вот недавно созданный билет # 35905 от Питера Goosen , относительно нового
smilies_trans
фильтра.Обновление - WordPress 4.7+
Новый фильтр будет доступен в WordPress 4.7+, но это название будет
smilies
неsmilies_trans
.Наши приведенные выше примеры можно записать так:
или явно с:
Демо-плагин становится:
Нам больше не нужно возиться с глобальным
$wpsmiliestrans
массивом!источник
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?use
ключевое слово в своих ответах здесь, но это хорошее напоминание о глобалах, еще раз спасибо (:) <- возможно, мы могли бы использовать симметричный смайлик для лучшей доступности для всех @IsmaelMiguelСогласно Кодексу WordPress об использовании смайликов :
источник
3
, установив его1
не получится код , как$img
,$siteurl
будут игнорироваться и для этого будет определено в фильтре :-)