Ethan's Blog

记录和思考

WordPress 显示 filter 和 action 钩子上的所有函数

WordPress 主题开发或者插件开发时,有时需要列出页面 filter 和 action 钩子上的所有函数,以便调试。主题开发中,将以下代码添加到 functions.php 末尾,即可在访问页面的时候列出 WordPress 钩子上的所有函数:

global $wp_filter;
echo "<pre>" . print_r($wp_filter, true) . "</pre>";

上面的代码会显示附加到 WordPress 所有 filter 和 action 钩子上的函数,而如果想要显示某个 hook 钩子上的函数,则将以下代码添加到 functions.php 末尾: Read More ...

4+ 方式使用 WordPress 的循环

4+ 方式使用 WordPress 的循环

WordPress 主题模板的核心是令人敬佩的 WordPress 循环。例如,当您查看 index.php 文件时,循环是通常以 if (have_posts()) 开头并包含用于生成页面的所有标记和网页标签的那个部分。默认循环适用于大多数只需要单个循环的主题,但对于具有多个或自定义循环等内容的更高级的主题设计,需要更强大的循环功能。幸运的是,WordPress 为循环提供了足够的灵活性,有四种或五种循环的方式: Read More ...

Hexo 相关文章的代码实现

以前使用 WordPress 的时候,每次自己写主题总要加上一个功能:相关文章。总感觉用户看完文章后可能会想看看还有什么相关的文章,以便更加全面的了解这个问题。转到 Hexo 后,对 Hexo 的代码进行了一点研究,也摸索着写了一个主题,今天花了一个下午的时间,为自己 Hexo 博客加上了相关文章功能。

相关文章的实现方式大概可以分为两个大类:一是使用第三方服务,例如无觅、友荐、bShare、阿里云的云推荐以及百度推荐等。这种方式的优点是对相关文章的分析可能更强大,在如何定义文章是否相关上可能更加全面,缺点是需要引入较多的外站 js 文件等。第二类是自己写代码实现。现在网上对 Hexo 的相关文章实现第一类的文章非常多,而我更倾向于使用第二种方法,于是下午自己代码实现了 Hexo 的相关文章功能。 Read More ...

CodeIgniter 的多语言实现

学习和使用 CodeIgniter 进行 Web 开发已经有一段时间了,自己也做过一些项目,对 CodeIgniter 的各种优缺点也有了更多的认识。最近在对自己以前写的一个网站进行重构,其中要实现的功能之一就是网站的多语言实现。以前采用的方案并没有使用到 CodeIgniter 的语言类,而是用了比较笨的方法来做这个事情,现在随着姿势水平的提高,将更好的实现方法记录和分享一下。 Read More ...

CodeIgniter 将所有上传文件识别为 application/octet-stream 的问题

最近使用 CodeIgniter 的文件上传类时,遇到了一个问题,不管上传什么类型的文件,都会提示 “The filetype you are attempting to upload is not allowed.” 。实际上,我已经在文件上传类的配置中,将所需要上传的文件类型写到了 allowed_types 的配置项中。

通过开启 CodeIgniter 的调试信息 ( $this->output->enable_profiler(TRUE); ),发现不管上传的是什么类型的文件,CodeIgniter 都会将文件识别为 application/octet-stream 的类型。搜集了一些资料,原来原因是 PHP 的配置问题,也就是说 PHP 没有能力识别上传的文件的类型,自然 CodeIgniter 也就无法识别文件类型了,最后把解决办法分享如下: Read More ...

凿壁偷光

上一篇文章说到在学习 Python,实际上是为了实现一个目的:统计 shadowsocks 多用户的流量。这段时间经历了自己的期末考试,经历几个项目的赶工,我自己的新的项目也终于发布了。学习了一段时间的 Python,然后经过这个项目,感觉对 Python 也算是入门了哈哈。

新发布的项目我取名为 “凿壁偷光” ,目的在于帮助大家自由获取谷歌搜索、谷歌学术等服务,特别的来说,我的帮助对象更集中在高校师生这一块。真的对于高校师生来说,没有谷歌学术、没有谷歌网页搜索的日子简直都不能好好学术了好嘛。 Read More ...

Python 入门教程

已经决定学习 Python 很久了,这几天一直被一个问题困扰,需要解决,可能 Python 是一个很好的方式。晚上去图书馆也没发现有比较好的书,于是网上找了找,感觉还不错,推荐给大家。

简明 Python 教程:

http://woodpecker.org.cn/abyteofpython_cn/chinese/index.html

Python 教程:

http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

推荐从第一个开始看,可能因为我接触过的语言比较杂和多,晚上花了四个小时左右边看边操作,已经有点入门的感觉了。第二个教程更加详细和深入点,可以先看完第一个然后有选择地看第二个。

谷姐么么哒

上周五在办公室的时候,听大师姐在那边说使用 hosts 的方式使用谷歌网页搜索又出现问题了,我才想起来我在寒假的时候有做过一个谷歌网页搜索的反向代理,于是推荐给了办公室师兄师姐使用。周末看大师赛的时候又在 v2ex 上看到 GitHub Student Developer Pack 的活动,拿到了 DO 的一百美元的抵用券和 NameCheap 的免费获得 .me 域名一枚的机会,于是想着好好利用这个资源,那么做什么呢?想到来朋友们对谷歌的需求,于是就有了做一个可用的谷歌网页搜索和谷歌学术给朋友用的想法。

先把网址亮出来:

谷歌网页搜索:http://goojie.me/

谷歌学术:http://scholar.goojie.me/

中文名叫 “谷姐”,取名灵感要感谢某人!由名字就知道和谷歌关系不一般哈。 Read More ...

PHP 开发详解:PayPal Instant Payment Notification (IPN)

上次在 PHP 开发详解:PayPal Payment Data Transfer (PDT) 一文中介绍了网站集成 Paypal 付款功能并如何将付款数据返回,能够使得用户在付款完成后继续回到网站上来,并将付款信息告知用户。但是 PayPal Payment Data Transfer 这样的数据返回方式是不保险的,特别是对于用户完成付款后还需要进行后续业务处理,如标注订单为已付款以及减去商品库存等。用户有可能在付款完成后还没跳转到自己网站就已经关闭了页面,而我们的交易数据和业务处理都必须通过访问付款完成后的 ReturnURL 来得到展示与处理。为了获得更加保险的业务处理,我们在集成使用 Paypal 付款功能时需要按需使用 PayPal Instant Payment Notification (IPN)。 Read More ...