답변:
콘텐츠 웃음은 다음과 같이 변환됩니다.
add_filter( 'the_content', 'convert_smilies' );
여기서 이 부분 의 convert_smilies()
기능이 중요하다 :
$content = preg_replace_callback( $wp_smiliessearch, 'translate_smiley', $content );
우리가 들여다 경우 translate_smiley()
우리는 찾아 다음 :
// Don't convert smilies that aren't images - they're probably emoji.
if ( ! in_array( $ext, $image_exts ) ) {
return $img;
}
smilies_src
필터가 적용 되기 전에 .
따라서이 필터는 :)
웃는 경우에는 사용할 수 없습니다 .
우리는 다음과 같이 웃음을 초기화했습니다.
add_action( 'init', 'smilies_init', 5 );
함수 설명 내에서 다음을smilies_init()
읽을 수 있습니다 .
플러그인은
$wpsmiliestrans
블로거가 입력하는 코드 키와 이미지 파일 값을 사용하여를 배열 로 설정하여 기본 스마일리스트를 무시할 수 있습니다 .
전역 $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",
);
또는 더 좋은 ksorted 디스플레이 :
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-)] => 😎
)
위의 핵심 의견을 올바르게 이해하면 다음을 수행 할 수 있습니다.
/**
* :) 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 Claus
if(
is_array( $wpsmiliestrans )
&& get_option( 'use_smilies' )
&& 12 == current_time( 'n' )
)
$wpsmiliestrans[':)'] = "\xF0\x9F\x8E\x85";
}, 6 );
글로벌 의견에 대해 Ismael Miguel 에게 감사드립니다 .
새 필터 와 관련하여 Pieter Goosen 이 새로 생성 한 티켓 # 35905 가 있습니다.smilies_trans
새로운 필터는 것입니다 가능한 4.7+ 워드 프레스, 그러나 그것의 이름이 될 것 smilies
없습니다 smilies_trans
.
위의 예제는 다음과 같이 작성할 수 있습니다.
add_filter( 'smilies', function( $smilies )
{
if( isset( $smilies[':cool:'] ) )
$smilies[':)'] = $smilies[':cool:'];
return $smilies;
} );
또는 명시 적으로
add_filter( 'smilies', function( $smilies )
{
$smilies[':)'] = "\xf0\x9f\x98\x8e";
return $smilies;
} );
데모 플러그인은 다음과 같습니다.
<?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;
} );
우리는 $wpsmiliestrans
더 이상 전역 배열 을 망칠 필요가 없습니다!
add_action( 'init', function() use (&$wpsmiliestrans){ $wpsmiliestrans[':)'] = "\xf0\x9f\x98\x8e"; }, 6 );
?
use
여기 내 대답에 키워드를 많이하지만, 다시 (: <전역, 감사에 관한 좋은 알림입니다 - 아마 우리 모두의 @IsmaelMiguel 더 나은 접근성에 대한 대칭 웃는를 사용할 수 있습니다
웃음 사용 에 대한 워드 프레스 코덱스에 따르면 :
같은 이름으로 원하는 이미지를 서버에 업로드하고 (예 : wp-content / images / smilies) 테마의 function.php에 넣으십시오.
add_filter ( 'smilies_src', 'my_custom_smilies_src', 10, 3); my_custom_smilies_src 함수 ($ img_src, $ img, $ siteurl) { $ siteurl을 반환합니다. '/ wp-content / images / smilies /'.$ img; }그러면 http://example.com/wp-includes/images/smilies/icon_question.gif 가 http://example.com/wp-content/images/smilies/icon_question.gif 로 바뀝니다.
3
할 설정, 1
같은 코드를 실패 $img
, $siteurl
무시되고 그에는 필터 :-)에 정의되지 않습니다