替换Gravatar头像国内镜像

因为Gravatar被墙,国内访问无法显示,加载头像失败还影响网页打开速度,不如替换掉,有两个方法。
一是安装插件,有点是随意更换和升级主题不影响使用,缺点也很明显,插件多了影响网站速度。
二是更改主题文件,替换Gravatar地址为国内镜像,现在国内镜像也比较多,推荐两个:
继续阅读 “替换Gravatar头像国内镜像”

批量替换wordpress文章内容

更换主机后,发现图片都不显示了,原来是更换后图片的链接变了,一个个改肯定不现实,这就需要用到SQL了。
首先,登录数据库查询包含旧链接的表和字段。
其次,用update语句替换旧链接为新链接。
就用替换图片链接为例,查阅在wp_posts表里,有两个字段post_contentguid包含旧链接内容:

UPDATE wp_posts SET post_content=REPLACE(post_content,'旧链接','新链接')
UPDATE wp_posts SET guid=REPLACE(guid,'旧链接','新链接')

wordpress恢复后台上传路径设置

wordpress3.5版本下后台有上传路径,链接url设置,升级后后台默认没有设置选项,默认的路径是wp-content/uploads,如果要修改需要手动改设置文件options.php文件,或者修改主题functions.php文件,详见以前的文章。
也可以通过修改主题functions.php文件,添加下列代码,让后台恢复设置选项:

//恢复后台上传设置
if(get_option('upload_path')=='wp-content/uploads' || get_option('upload_path')==null) {
	update_option('upload_path',WP_CONTENT_DIR.'/uploads');
}

wordpress tips:关闭猜测网址和回复的HTML功能

在wordpress里当我们输入一个错误或者不完整的链接时,wp会自动猜测正确的链接地址,从而跳转到猜测网址而不是显示404错误页面
回复里支持html功能是不安全的,也没有必要,我们可以修改主题的functions.php来关闭这些功能

关闭猜测网址:
add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
 if (is_404()) {
 return false;
 }
 return $url;
}
关闭回复的HTML功能:
add_filter( 'pre_comment_content', 'wp_specialchars' );

禁用(替换)google字体

替换360代码库方法已失效

以前在《解决fonts.googleapis.com加载慢》里说过如何手动更改google fonts到360 cdn来加速网站,其实wordpress的这个open-sans字体功能在国内确属鸡肋,改掉不如直接禁掉。

修改方法:

打开主题functions.php文件,添加如下代码:

function remove_open_sans() {
    wp_deregister_style( 'open-sans' );
    wp_register_style( 'open-sans', false );
    wp_enqueue_style('open-sans','');
}
add_action( 'init', 'remove_open_sans' );

如果需要同时修改掉前台和后台的话,这么修改:

if (!function_exists('remove_wp_open_sans')) :
    function remove_wp_open_sans() {
        wp_deregister_style( 'open-sans' );
        wp_register_style( 'open-sans', false );
    }
    //修改掉前台字体
    add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
    //修改掉后台字体
     add_action('admin_enqueue_scripts', 'remove_wp_open_sans');
endif;
替换google字体为360字体:

以前说过的手动修改方法需要修改wp的核心代码,太过危险,我们可以修改主题的functions.php来达到一样的效果:

function my_replace_open_sans() {
	wp_deregister_style('open-sans');
	wp_register_style( 'open-sans', '//fonts.useso.com/css?family=Open+Sans:300italic,400italic,600italic,300,400,600' );
	wp_enqueue_style( 'open-sans');
}
add_action( 'wp_enqueue_scripts', 'my_replace_open_sans' );
add_action('admin_enqueue_scripts', 'my_replace_open_sans');

wordpress tips:不加载默认的jQuery库

修改wordpress的时候,添加一些功能往往会调用不同版本的jq库,默认wordpress自带的jq库可能会造成冲突和错误。通过修改主题functions.php可以取消加载默认的jq库,然后自定义加载自己的jq库。

注销方法:

打开主题的functions.php文件,添加如下代码:

    function my_enqueue_scripts() {
    wp_deregister_script('jquery');
}
    add_action( 'wp_enqueue_scripts', 'my_enqueue_scripts', 1 );

如果需要在后台不禁止加载,只在前台禁用,这么改:

    if ( !is_admin() ) {
   function my_init_method() {
      wp_deregister_script( 'jquery' );
    }
    add_action('init', 'my_init_method');
}
    wp_deregister_script( 'l10n' );
注册自定义JQuery:

打开主题的functions.php,添加如下代码:

/*
 * wp_deregister_script():将WordPress中当前的jQuery版本禁用
 * wp_register_script():注册新的CDN版本的jQuery
 * wp_enqueue_script():将jQuery引入到主题或插件中
 * ajax.googleapis.com 可换成国内的cdn缓存,如百度,360,新浪,阿里云,七牛(http://staticfile.org/)等等
 */
function add_scripts() {
	wp_deregister_script( 'jquery' );
	wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js');
	wp_enqueue_script( 'jquery' );
}
add_action('wp_enqueue_scripts', 'add_scripts');

扩展主题的functions.php功能

扩展wordpress的时候,修改的最多的就是主题的functions.php文件,扩展了多了以后,functions会越来越庞大,对维护和以后的修改来说,会大大的不方便,出了问题也很难查找和恢复。
当然,我们可以使用include_once来加载自定义的文件,这种方法也很简便,但是对于修改量大或者修改频繁的来说,也会存在上面的维护问题。

include_once('functions-user.php');

现在说的是另一种方法,只要添加一段代码到functions.php文件里,以后只要把扩展的文件加到定义的文件夹里,就会自动加载,不同的扩展使用单独的文件,出错了可以直接删除,方便又安全。

修改方法:

打开主题的functions.php文件,插入以下代码:

define('INC', TEMPLATEPATH.'/inc');
IncludeAll( INC );
function IncludeAll($dir){
    $dir = realpath($dir);
    if($dir){
        $files = scandir($dir);
        sort($files);
        foreach($files as $file){
            if($file == '.' || $file == '..'){
                continue;
            }elseif(preg_match('/.php$/i', $file)){
                include_once $dir.'/'.$file;
            }
        }
    }
}

以后每次为主题扩展功能的时候只要将代码保存为一个新的php文件,文件名不限,但最好是英文或数字,然后将文件放入到inc目录下即可,效果和直接将代码加到functions.php文件一样,不用一个一个的去include加载。而且一旦代码出错只要直接删除出错代码的文件即可。

WordPress tips:清理已经停用的短代码

WordPress短代码功能非常强,也很容易使用。不过如果停用后,或者更换主题后没有引入后,那在文章里就会显示出短代码,非常影响阅读。
解决方法也很简单,使用SQL替换掉短代码就可以了(替换前记得备份数据库):

UPDATE wp_post SET post_content = replace(post_content, '[shortcode]', '' ) ;
将SQL语句里的[shortcode]换成需要替换掉的短代码