替换Gravatar头像国内镜像

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

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');
}

禁用(替换)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]换成需要替换掉的短代码

添加后台html编辑按钮

有人喜欢在本地写好后到wp后台发布,有人喜欢直接使用wordpress后台写文章。我个人习惯在本地写好后上传发布,但是偶尔也会在后台用html模式写文章,可是WP默认的按钮太少了,而自己又添加了很多shortcode。

修改方法:

wp的按钮定义在wp-includes下的quicktags.js文件里,但是直接修改核心代码太过危险了,我们可以自定义一个diy-quicktags.js并在functions.php里注册引入这个js就行了。

自定义js文件:

新建一个文件diy-quicktags.js,编辑内容:

QTags.addButton( '<', '<', '<', '' );
QTags.addButton( '>', '>', '>', '' );
QTags.addButton( 'hr', 'hr', "\n<hr />\n", '' );
QTags.addButton( 'h1', 'h1', "\n<h1>", "</h1>\n" );
QTags.addButton( 'h2', 'h2', "\n<h2>", "</h2>\n" );
QTags.addButton( 'h3', 'h3', "\n<h3>", "</h3>\n" );
//这儿共有四对引号,分别是按钮的ID、显示名、点一下输入内容、再点一下关闭内容(此为空则一次输入全部内容),\n表示换行。
注册js文件:

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

/**
 * 注册后台HTML编辑器按钮添加JS到WP
 * 需要添加的按钮在diy-quicktags.js里修改
 */
function diy_quicktags() {
    wp_register_script('diyquicktagsJS',get_stylesheet_directory_uri().'/diy-quicktags.js',array('quicktags'));
    wp_enqueue_script('diyquicktagsJS');
}
add_action('admin_print_scripts', 'diy_quicktags');

关闭wordpress写文章的版本功能

在wordpress后台写文章的时候,wordpress会定时保存文章为草稿,避免突发情况造成文字丢失。默认为60秒。
每次修改文章后,wordpress都会存储上一版本到数据库,如果修改的频繁,会发现有几十个旧版本,这些旧版本没有存在的必要还占用数据库。
wordpress后台可以直接修改主题的代码,这个功能很方便,但是也很危险,一个失误就可能导致wordpress无法打开,禁用掉这功能,在本地编辑测试后上传的方法更安全。
打开wordpress目录下的wp-config.php文件:
通过修改 WP_POST_REVISIONS,AUTOSAVE_INTERVAL,DISALLOW_FILE_EDIT函数来控制,代码如下:

/**
 * 版本修订功能设置
 * WP_POST_REVISIONS 的数值表示存储的版本数量,false 为禁用版本修订功能。
 * AUTOSAVE_INTERVAL为自动保存间隔时间(秒,默认设置为60秒)。
 * 如需禁用此功能,请移除或注释掉。
 */
define('WP_POST_REVISIONS', 2);
define('AUTOSAVE_INTERVAL', 120);
/**
 * 禁止Wordpress后台的主题编辑功能
 * 可以避免后台错误修改后造成的网站无法访问。
 * 如需禁用,请移除或注释掉本行。
 */
define('DISALLOW_FILE_EDIT', true);