非插件 Wordpress 标题个性化字体图片

  看到 Wordpress 免插件实现的功能,我都是特别眼馋,最近有点文囧,所以转一篇 LMS 的技术文章,我觉得还是挺有意思的。

  原文:非插件wp标题个性化字体图片显示

  效果:让 Wordpress 的日志标题显示个性化字体图片,见图:

  方法如下:

一、建立一个文件名为imagetext的php文件,将以下代码复制到文件里去,保存utf-8格式。上传到主题文件夹下。

<?php
$allow_site = ''; // for security

/*========================================================

DO NOT EDIT BELOW THIS LINE

=========================================================*/
error_reporting(0);
if (!preg_match('@^http://(www\.)?'.preg_quote($allow_site).'@', $_SERVER['HTTP_REFERER'])) exit;

putenv('GDFONTPATH='.realpath('./'));

$fname = $_GET['font']; // font name
$fsize = $_GET['size']; // font size
$bgcolor = $_GET['bgcolor'] or 'FFFFFF'; // background color
$txtcolor = $_GET['txtcolor'] or '000000'; // text color
$notcolor = $_GET['notcolor'] or '000000'; // notice color

$text = $_GET['text'];
$bound = imagettfbbox($fsize, 0, $fname, $text);
$width = max($bound[2],$bound[4])+10;
$height = $fsize * 1.5;

// create an image
$im = imagecreatetruecolor($width, $height);

// anti-aliasing
if (function_exists('imageantialias')) imageantialias($im, true);

list($r,$g,$b) = txt2rgb($bgcolor);
$bgcol = imagecolorallocate($im, $r, $g, $b);

list($r,$g,$b) = txt2rgb($_GET['notice']==='true'?$notcolor:$txtcolor);
$txtcol = imagecolorallocate($im, $r, $g, $b);
imagefill($im, 0, 0, $bgcol);
imagettftext($im, $fsize, 0, 5, $height*0.8, $txtcol, $fname, $text);
imagetruecolortopalette($im, true, 256);

// set transparent color
$bgcol = imagecolorat($im, 1, 1); // color of (1,1) is background!
imagecolortransparent($im, $bgcol);

// print out
header("Content-type: " . image_type_to_mime_type(IMAGETYPE_GIF));
imagegif($im);
imagedestroy($im);

function txt2rgb($txt) {
    return array(
        hexdec(substr($txt,0,2)),
        hexdec(substr($txt,2,2)),
        hexdec(substr($txt,4,2))
    );
}
?>

二、建立一个文件名为imagetext_js的php文件,将以下代码复制到文件里去,保存utf-8格式。上传到主题文件夹下。
<?php
function prettyFont(txt,notice) {
    var str = '';

    if (typeof notice == "undefined") notice = "false";
    str += '<img src="<?php echo dirname($_SERVER['SCRIPT_NAME'])?>/imagetext.php?text='+encodeURIComponent(txt)+'&font='+prettyFont.font+'&size='+prettyFont.size+'&notice='+notice+'&bgcolor='+prettyFont.bgColor+'&txtcolor='+prettyFont.txtColor+'&notcolor='+prettyFont.notColor+'" alt="'+txt+'" border="0" />';

    document.write(str);
}
prettyFont.font = "prince.ttf"; // 字体文件的文件名  
prettyFont.size = 18; // 显示字体的大小  
prettyFont.bgColor = "FFFFFF"; // 背景颜色,一般和主题背景颜色统一  
prettyFont.txtColor = "135009"; // 字体颜色  
prettyFont.notColor = "669900"; // notice color
?>

三、将自己需要显示的字体文件上传到主题文件夹,文件名必须同步骤二中prettyFont.font = "prince.ttf";引号内填写的字体文件名一致。

四、在主题文件夹下的header.php文件中引用js代码

<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/imagetext_js.php"></script>

代码放在< head > < / head>内部。

五、将原主题index.php、single.php等页面内部的

<?php the_title(); ?>

替换成

<script type="text/javascript">prettyFont("<?php the_title(); ?>");</script>

就OK了!

效果见博客sherry同学的博客:http://blog.fairysherry.org/

以上代码原作者: http://fsun.cn/ 略有合并。

本文已盖 51 层楼

  1. 这种方法如何解决SEO是个难题。不过想法真的很强大

  2. 回复 金冈 说:

    imagetext_js的php文件:第一行“”也要去掉。都不知道你有没验证过,囧

  3. 回复 evlos 说:

    太依赖JS了,不过想法很不错喔 ~

  4. 这样 那个标题就成了图片了吗》?

  5. 回复 Bee君 说:

    不折腾啊啊啊啊~~ :eek:

  6. 回复 bolo 说:

    这样如果浏览器禁用了JavaScript的话就看不到标题了,不如用CSS

  7. 回复 leesum 说:

    效果是蛮不错的,不过这对程序升级而言不是件好事啊,后期维护很麻烦

  8. 回复 Leeiio 说:

    哦,这样折腾还不如装插件了。。这种做法不如我blog里推荐的那个插件生成的是静态页面,这样还需要js代价太大了。。

  9. 回复 泡面 说:

    原来见过一个HK的朋友介绍这种功能,是将标题图片化,这个差不多吧?

  10. 看了下效果,果然 不错啊。
    PS:二、建立一个文件名为imagetext_js的php文件 。。。。。这里最外层的php标签应该去除吧

  11. 回复 iBoluo 说:

    :cool: 技术文你好,技术文再见

  12. 回复 易搜购 说:

    wp虽然强大,但插件也不能都装,多了确实耗资源,普通的装些常用的就可以了,视自己的情况决定,满足自己的需求是比较明智的

  13. 回复 柳城 说:

    不喜欢拖累速度的.. :wink:

  14. 回复 happyet 说:

    字体文件大的确是速度很慢,大到十几兆的时候网速慢甚至就显示不了了。。。
    小的字体可以玩玩。

  15. 回复 lifishake 说:

    这种功能即使写成代码也不比用插件快多少,所以还是直接用插件算了.

  16. 回复 球犯 说:

    我是用的插件… 手机上不方便,等下电脑上了去折腾看看,哈哈~

  17. 回复 集思 说:

    最近都是美化WP的技巧啊 :oops:

  18. 回复 自由人 说:

    WP的世界真强大。。。 :grin:

  19. 回复 dot 说:

    中文字体包太大,严重降低速度

  20. 回复 zwwooooo 说:

    CP 党看不懂啊 :twisted: 最近文囧的人真多……

  21. 回复 MuMu'S 说:

    我就是有看到这样的字体,还不知道是怎么回事呢。

  22. 很不错的日志,收藏了,很有用啊,字体嗯嗯!

  23. 回复 苏扬 说:

    沙发貌似久远 原创才是王道 哈哈 支持万戈

  24. 回复 Rusaer 说:

    呵呵,一看图就知道是sherry的。话说这个方法还真实不错,不过为了速度,还是不折腾的好

  25. 回复 hzlzh 说:

    字体效果不错,不过最近忙,懒得折腾

  26. 回复 Skyoy 说:

    字体很美啊,待空了搞去玩玩。

  27. 回复 Jclyn 说:

    第十名了都

    每次都来迟

  28. 回复 摸了你 说:

    有一行代码怎么出轨了?? :eek:

  29. 回复 Google不爱我 说:

    真的是沙发哎 :roll:

  30. 回复 Google不爱我 说:

    又见技术文。沙发

Leave a comment

您已输入0

三言两语

我的生活心情语录

工作手札

路漫漫其修远兮

精品推荐

好东西要分享

嘻哈娱乐

八卦趣事一笑而过

电脑网络

全新技术尽搜罗

转来载去

文人墨客美文赏析