WordPress修改记录和技巧

2009年6月24日 | 分类: | 标签: ,

本站使用的插件:
Google XML Sitemaps 生成网站地图,基本上是必需的。
Yet Another Related Posts Plugin 文章相关插件,功能挺好的,可惜我不懂修改模板,所以放弃了没用。
Comment Reply Notification 评论回复通知插件, 当评论被回复时会email通知评论的作者.
My Category Order 提供分类目录排序功能,wordpress本身自带的分类目录没有得排序。
My Link Order 友情链接排序
WordPress Related Posts 文章相关插件
WP-PageNavi 分页插件
Widget Logic 调整侧边栏在页面中显示什么,例如我的友情链接,就只在首页中显示,其他不显示。
Super Switch 超级开关,可以禁用某些功能,例如修订历史、检查更新等
All in One SEO SEO插件,实在不知道用那个好

技巧
[主题] 如何在博客 index 页面显示文章摘要, 而非文章的全部内容?
方法有二:
1. 打开 index.php 文件, 找到 the_content, 并将 the_content(...) 改成 the_excerpt().
2. 在撰写文章的时候在文章内加入 标签 (请注意添加位置, 以免造成页面缺失标签), Visual 编辑模式下可以点击 'Insert More tag' 按钮 (快捷键 Alt+Shift+T) 添加.

禁用修订历史
在wordpress的程序根目录,配置文件wp-config.php中

1
2
3
4
5
6
7
/**
 * WordPress 编辑器自动保存和历史版本选项。
 *
 * 本项注释掉即可开启。
 */
define('WP_POST_REVISIONS', false);//禁用历史修订版本
define('AUTOSAVE_INTERVAL', 86400);//设置自动保存时间设置为一天。

用CSS为外链添加图标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* external links START */
.post .content a[href^="http:"]{
background: url(external.png) no-repeat right;
padding-right:12px;
}
.post .content a[href^="http://hillboy.org"],.post .content a[href^="http://hillboy.org"],.post .content a[href^="http://picasaweb.google.com"]{
background-image:none;
padding-right:0;
}
.post .content a[href$=".jpg"],.post .content a[href$=".gif"]{
background-image:none;
padding-right:0;
}
/* external links END */

WP Super Cache 功能强大的缓存插件
卸载方法:
禁用插件。
删除/wp-content/plugins/wp-super-cache目录。
删除/wp-content/cache目录。
如果出现以下提示
UNINSTALL_WPSUPERCACHE must be set to a non-blank value in uninstall.php
需要在WP Super Cache插件安装目录下找到uninstall.php文件,
将define( ‘UNINSTALL_WPSUPERCACHE’, ”);
改为define( ‘UNINSTALL_WPSUPERCACHE’, ‘1′ );
删除wp-content目录下的wp-config.php、advanced-cache.php文件。
修改站点根目录下的wp-config.php,删掉 define(’WP_CACHE’, true);
重建.htaccess文件。

防止wordpress英文标点符号半角转全角
最近发代码的时候Wordpress总是在前面访问的时候把英文的标点符号从半角转为全角.这样看代码和复制代码的时候就带来了困难了..
解决方法:
修改位于”WordPress安装目录/wp-includes/”目录里面的”formatting.php”文件, 在第123行到第126行的这个for循环语句的第一个if条件里, 你应该能看到以下4行代码(或者你直接搜索这些代码查找也可以):

1
2
3
4
// This is not a tag, nor is the texturization disabled static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

将这个if条件里面的两个 $curl = 开头的行都屏蔽就可以了, 如下:

1
2
3
4
// This is not a tag, nor is the texturization disabled static strings
// 屏蔽自动转换标点 $curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
// 屏蔽自动转换标点 $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

然后保存好后, 重新刷新你的页面, 那些英文标点就不会在被自动转换为中文标点了.

方法二:
在主题文件functions.php中添加如下代码,免费wordpress升级时重新修改一次的麻烦。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 禁止半角转全角
$qmr_work_tags = array(
  'the_title',             // 标题
  'the_content',           // 内容 *
  'the_excerpt',           // 摘要 *
  'single_post_title',     // 单篇文章标题
  'comment_author',        // 评论作者
  'comment_text',          // 评论内容 *
  'link_description',      // 友链描述(已弃用,但还很常用)
  'bloginfo',              // 博客信息
  'wp_title',              // 网站标题
  'term_description',      // 项目描述
  'category_description',  // 分类描述
  'widget_title',          // 小工具标题
  'widget_text'            // 小工具文本
  );
foreach ( $qmr_work_tags as $qmr_work_tag ) {
  remove_filter ($qmr_work_tag, 'wptexturize');
  }

调整标签字体大小
修改目录wp-includes/category-template.php文件
查找smallest' => 8, 'largest' => 22
默认最小和最大字体为8和22,这个自己喜欢改,我就改成最大16。

给 WordPress 留言框添加背景文字
在 css 文件中找到留言框的属性定义语句,比如我的是:

1
2
3
textarea#comment {
width:651px;
}

改成

1
2
3
4
textarea#comment {
width:651px;
background:url(images/liuyang.png) no-repeat scroll center center;
}

301转向
完美301跳转,带www和不带www均可跳转。

1
2
3
4
5
6
7
8
9
10
11
12
# BEGIN WordPress
 
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^nhljz.net$ [OR]
RewriteCond %{HTTP_HOST} ^www.nhljz.net$
RewriteRule ^(.*)$ http://hillboy.org/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
 
# END WordPress

修改可以将 评论 Email 通知中的 IP Whois 查询链接
打开 wp-includes\pluggable.php
查找:(共两处,分别在953行,1048行)

1
http://whois.arin.net/rest/ip/

替换为:

1
http://www.ip138.com/ips.asp?ip=

JS实现延迟加载
详细请看:Lazy Load, 延迟加载图片的 jQuery 插件

修复被墙的Gravatar头像
打开wp-includes目录下的文件pluggable.php,查找两处地方:
%d.gravatar.com0.gravatar.com
均替换为:

www.gravatar.com

或者在主题文件functions.php中添加以下代码:

1
2
3
4
5
6
7
// Quickly Gravatar
function quickly_gravatar($avatar) {
  $avatar = str_replace('?s=', '.png?s=', $avatar);
  $avatar = preg_replace("/([0-9])\.gravatar/i", "www.gravatar", $avatar);
  return $avatar;
}
add_filter('get_avatar', 'quickly_gravatar');

给网站添加回到顶部按钮
详细请看:给网站添加回到顶部按钮

评论链接在新窗口中打开
打开wp-includes目录下的comment- template.php文件
搜索:

<a href='$url' rel='external nofollow' class='url'>$author</a>

在<a>标签中添加target='_blank'属性,如下:

<a href='$url' rel='external nofollow' class='url' target='_blank'>$author</a>

去掉rel中无用属性,让wordpress通过html5检测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
< ?php   
    foreach(array(
        'rsd_link',//rel="EditURI"
        'index_rel_link',//rel="index"
        'start_post_rel_link',//rel="start"
        'wlwmanifest_link'//rel="wlwmanifest"
    ) as $xx)
    remove_action('wp_head',$xx);//X掉以上
    //rel="category"或rel="category tag", 这个最巨量
    function the_category_filter($thelist){
        return preg_replace('/rel=".*?"/','rel="tag"',$thelist);
    }   
    add_filter('the_category','the_category_filter');
?>

给wordpress后台的链接XFN关系加上"external"和"nofollow"选项
详细请看:给wordpress后台的链接XFN关系加上"external"和"nofollow"选项

Gravatar头像缓存代码
将以下代码添加到主题functions.php文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function my_avatar_admin($avatar) {
     $tmp = strpos($avatar, 'http');
     $g = substr($avatar, $tmp, strpos($avatar, "'", $tmp) - $tmp);
     $tmp = strpos($g, 'avatar/') + 7;
     $f = substr($g, $tmp, strpos($g, "?", $tmp) - $tmp);
     $w = home_url(); // $w = get_bloginfo('url');
     $e = preg_replace('/wordpress\//', '', ABSPATH) .'images/avatar/'. $f .'.png';
     $t = 604800; //设定7天, 单位:秒
     if ( !is_file($e) || (time() - filemtime($e)) > $t ) //当头像不存在或者文件超过7天才更新
         copy(htmlspecialchars_decode($g), $e);
     else
         $avatar = strtr($avatar, array($g => $w.'/images/avatar/'.$f.'.png'));
     if (filesize($e) < 500) copy($default, $e);
     return $avatar;
 }
 add_filter('get_avatar', 'my_avatar_admin');

禁止 WordPress 自动压缩上传图片质量
在主题文件functions.php中添加以下代码:

add_filter( 'jpeg_quality', create_function( '', 'return 100;' ) );

另外一方面,可能希望图片压缩质量更高一些:

add_filter( 'jpeg_quality', create_function( '', 'return 80;' ) );

相应的把以上代码后面的参数改成自己喜欢的压缩比例就可以了。

read more 链接上添加 nofollow
在主题文件functions.php中添加以下代码:

1
2
3
4
function add_nofollow_to_link($link) {
	return str_replace('<a', '<a rel="nofollow"', $link);
}
add_filter('the_content_more_link','add_nofollow_to_link', 0);

文章和feed下方添加版权信息
在主题文件functions.php中添加以下代码:

1
2
3
4
5
6
7
8
function feed_copyright($content) {
		if(is_single() or is_feed()) {
			$content.= '<div class="shengming">
<strong>声明:</strong> 本文遵循 <a href="http://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh" title="本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。" rel="license" target="_blank">BY-NC-SA 3.0</a> 协议. 转载请注明转自: <a rel="bookmark" title="'.get_the_title().'" href="'.get_permalink().'">'.get_the_title().'</a><div class="fixed"></div></div>';              
        }
        return $content;
}
add_filter ('the_content', 'feed_copyright');

不需要插件打开友情链接
在主题文件functions.php中添加以下代码:

1
2
// 打开友情链接
add_filter( 'pre_option_link_manager_enabled', '__return_true' );
声明: 本文遵循 BY-NC-SA 3.0 协议. 转载请注明转自: WordPress修改记录和技巧
支持本博发展,请勿过滤广告。
目前还没有任何评论.
XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。