这个应该不是什么新信息,但我却是现在才搞清楚。
在我制作的多个插件中都是用到了jquery这个便利的javascript库,但让我很郁闷的是,虽然已经调用了jquery,在html代码上也有jquery的链接,但插件中应有的效果却始终不能显示出来。但是改为调用Google AJAX Libraries API或jquery上的jquery.js都能出来效果。所以插件中我只好用Google AJAX Libraries API来代替了。
这实在不是什么好主意,但当时也是没办法,因为我不知道解决办法。
今天又是在wordpress调用jquery,情况还是如此。无意中打开wordpress中jquery.js,然后对比code.jquery.com中的代码,发现wordpress中的jquery.js最后面是多了一行代码的:
看来是这行代码的问题了,查阅jquery上的文档才知道,上面那行代码的意义是:释放jquery中的$变量。从而避免多个javascript库之间的冲突问题。当jquery中要使用到$变量时,可用jQuery来代替。例如:
1
2
3
| $(document).ready(function(){
$("p").after("<b>Hello</b>");
}); |
用下面的代码代替:
1
2
3
| jQuery(document).ready(function(){
jQuery("p").after("<b>Hello</b>");
}); |
OK,现在使用wordpress内核中的jquery库也能出来效果了。
虽然keywords对现在的搜索引擎来说,已经不是很重要了,不过给文章和首页加上一些keywords也是有必要的。另外一个就是 description,google貌似对description还是有一定重视的。Wordpress也有相关的SEO插件,比较出名的是All in on SEO pack,但对中文支持不是太好。
反这段PHP代码添加在header.php模板中,能自动为首页设置好keywords和 description。并且,在文章页面,能自动截断部分文章内容作为描述,也能自动把文章的tag加为keywords,感觉还不错,在此分享一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| <?php
//判断是否为首页
if (is_home()) {
$description = "你的站点描述";
$keywords = "你的关键词";
//判断是否为文章页
} else if (is_single()) {
if ($post->post_excerpt) {
$description = $post->post_excerpt;
} else {
$description = mb_strimwidth(strip_tags(
apply_filters('the_content',$post->post_content)
),0,220);
}
$keywords = "";
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ",";
}
//判断是否为分类页
} else if (is_category()) {
$description = category_description();
}
?>
<meta content="<?php echo $keywords; ?>" name="keywords" />
<meta content="<?php echo $description; ?>"name="description" /> |
将此段代码放入到header.php中的meta部分即可。
两种方法,注意如果改了也不能实现的就是模板不支持了,经我测试发现有些模板确实会不支持,不支持修改方法在最后
方法1:
在 comments.php 里 </form></div><?php endif; ?> 后插入如下 JS 代码也可以给留言板实现这个功能:
<script type="text/javascript">
document.getElementById("comment").onkeydown = function (moz_ev)
{
var ev = null;
if (window.event){
ev = window.event;
}else{
ev = moz_ev;
}
if (ev != null && ev.ctrlKey && ev.keyCode == 13)
{
document.getElementById("submit").click();
}
}
</script>
然后继续在 comments.php 文件中找到下面这句:
<input name="submit" type="submit" id="submit" tabindex="5" value="Submit" />
将 value="Submit"(不同的主题可能会有些差别,其实就是提交的那个按扭)的 value 值里加上一个(Ctrl+Enter),改成 value="Submit(Ctrl+Enter)"
方法2:
在 comments.php 中找到以下代码:
<textarea name="comment" id="comment" cols="105" rows="10" tabindex="4"></textarea>
修改为:
<textarea name="comment" id="comment" cols="105" rows="10" tabindex="4" onkeydown="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"></textarea>
这行代码和方法一效果一样,但是却精简一些,强烈推荐,这个其实就是在textarea后加上
onkeydown="if(event.ctrlKey&&event.keyCode==13){document.getElementById('submit').click();return false};"
更新:修改后仍不支持解决方法:
很多模板制作者在代码结构书写上不是很规范,导致制作出来的模板存在一定的不足,比如这个简单的JS提交,大家一看都知道就是用ID+键盘传值的。
通用的检测方法: 查找input内是否存在id="submit",如果使用了button做修饰的话同时也要注意button内存在id="submit",同时前后对应,id="这里和上边的JS中的"getElementById('submit')"要对应写,不一定是submit但要一致。