主题难免要修修改改. 在代码时我故意留了些可以个性化的 Hook 供大家使用.
实现方法是用 add_action 和 add_filter 函数. (更多相关信息请到官方查看文档). 比如我的文章中的声明, Google 广告, 页脚的备案等内容就是通过这种方法实现的.
下面以修改欢迎词为例简单说明:
本修改针对 PhilNa2 version 2.0.3
修改原理:
通过添加过滤器: add_filter函数实现.
首先打开app文件夹的template_functions.php文件找到welcome_msg函数部分, 大约在415行, 你会看到针对Google搜索过来的访客的欢迎词处理.
415
| if($m = apply_filters('welcome_msg_google_search',$str)) |
因此要修改来自Google搜索访客的欢迎词可以使用如下代码:(你可以将一下代码放到主题根目录functions.php的最后面,当然也可另外建一个文件, 另外引入也行)
Read more…
PhilNa2 从 2.0.0 开始重新代码. 从个人经验入手, 我使用了新的代码思路. 充分利用 WordPress 的循环( loop )结构. 更多的信息请查看官方文档. 另外鱼叔也写过相关的文章解释和介绍. 我不再复述. 这里我简单一下我代码的思路.
while … endwhile. 构成了文章输出的主循环.
WordPress 在加载主题文件之前就通过路由( URL )信息使用 WP_Query 类将文章,评论数据从数据库中请求回来了. 并判断使用相应的模板页面.
思路的产生
写过主题或修改过主题的都知道. 一个完整的主题包含有很多的文件. 它们分别负责不同的功能. 显示各页面对应的模板页. 然而, 事实上我们做个测试就知道.一个最简单的主题只需要两个文件就够了. 它们分别是 style.css 和 index.php . 页面的内容的实际上都是通过一个主循环来显示的.即 while… endwhile.而评论则是通过评论循环 (walk) 来显示. 具体它们是如何循环的不在本文讨论范围.
Read more…
我在博客上用了很多的 javascript 代码, 来实现些简单的动画效果和 Ajax . 本意是为了好看, 增强用户体验但是也不得不有所牺牲: 1. 可能会增加数据库请求. 2. 无法使用浏览器前进后退按钮.
今天写个思路来缓解一下第一个问题 ( 数据库请求 ) 注意只是缓解. 因为不是真正的缓存.
我们知道所以的 Ajax 请求其实和不同的请求是没有什么两样的. 但它也有自己的特点:
- 通过特定的 URL 请服务器请求数据.
- 可能包含特定的头部信息 ( RequestHeader ) .
- 服务器端有专门的代码来识别这些特殊请求, 并作相应处理.
Ajax 只是可能增加数据库请求, 并不是绝对会增加数据库请求. 这个要具体情况具体分析. 像我目前使用的这种分页方法就没有增加反而是减少请求.
我的思路是将请求返回的数据在展示的同时也放到一个数组变量里, 在下次请求的时候直接从这个缓存变量中取值. 因此, 这时 Ajax 的请求顺序变为: 先判断缓存如果有需要的数据则返回缓存数据, 没有则执行 Ajax 请求, 并在请求成功后缓存返回数据.
以 Ajax 分页 举例:
Read more…
前一段时间给博客添加了搜索评论的功能, 被人骂成是鸡肋. 忧伤. 劳动成果居然没有得到肯定.
我也很就没有分享技巧性的东西了, 好吧, 这篇文章告诉大家怎么高亮搜索结果.
为什么要高亮
也可以说是目的, 让用户搜索的结果更加一目了然.
原理
这个功能的实现方法是用正则表达式替换关键字.
代码
将以下代码放到你主题的 functions.php 文件中即可 ( 大量中文注释,不懂的请注意看 ).
Read more…
无聊时又开始捣腾主题, 完成了添加评论搜索功能, 今天更新给自己试用.
使用说明:
在边侧栏的搜索框中输入下列关键字即可启动评论搜索机制.
1. 搜索评论或评论者名称:
键入: type:comment+空格+关键字 或者 comment:+空格+关键字, 例如要搜索关键字 ‘philna’ , 输入 ‘type:comment philna’ 或者 ‘comment: philna’ 均可(不包含引号).
2. 搜索评论者
键入: name:+空格+关键字 或者 commentator:+空格+关键字, 例如要搜索 yinheli 的评论, 输入 ‘name: yinheli’ 或者 ‘commentator: yinheli’ 均可(不包含引号).
3. 搜索回复评论者评论
比如想搜索回复某某的评论, 只需将 1 操作中的关键字替换为 ‘@someone’ (@某某) 即可. 例如搜索回复 yinheli 的评论 键入: ‘comment: @yinheli’ (不包含引号)!
Read more…