标签 "WordPress" 下的文章

1、安装memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。
Memcached官网:http://memcached.org/
安装步骤:
1、下载源码包:

wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz

2、编译安装:

//确定libevent是否安装,centos使用yum
yum -y install libevent
tar -zxvf memcached-1.4.15.tar.gz
./configure --prefix=/usr/local/
make && make install
make clean

OK,Memcached安装成功
启动memcached
目标:使用11211端口、www 用户、最大占用16M内存、1024个软连接,输出
客户端请求,以守护进程方式运行

/usr/local/bin/memcached -p 11211 -d -u www -m 16 -c 1024 -vvv
//查看是否启动

[piaoyuncc@piaoyun.cc ~]# ps -ef | grep memcache
www 18739 1 0 09:32 ? 00:00:00 /usr/local/bin/memcached -p 11211 -d -u www -m 12 -c 1024 -vvv

OK,Memcached启动成功

2、安装memcache php扩展

扩展官网:http://pecl.php.net/package/memcache

你可以查看最新稳定包(stable)下载:

wget http://pecl.php.net/get/memcache-2.2.7.tgz

安装扩展:

tar -zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

安装成功后会显示你的memcache.so扩展的位置,比如我的:

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

最后我们需要把这个扩展添加到php中,打开你的php.ini文件在最后添加以下内容:

[Memcache]
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension = memcache.so

添加完后 重新启动php,我使用的是nginx+php-fpm进程所以命令如下:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

如果是apache的使用以下命令:

/usr/local/apache2/bin/apachectl restart

检查安装结果

/usr/local/php/bin/php -m | grep memcache

安装成功会输出:memcache

延伸阅读:Windows Server 2008 R2 64Bit下IIS环境安装memcache和memcached服务端

3、添加wordpress memcache插件

下载插件安装包:http://wordpress.org/extend/plugins/memcached/installation/
解压后将该文件object-cache.php 复制到 wp-content,注意不是 wp-content/plugins/

WordPress 会自动检查在 wp-content 目录下是否有 object-cache.php 文件,如果有,直接调用它作为 WordPress 对象缓存机制。

4、memcache效果监控

我们安装memcache 缓存后当然还要看下他的效果了,wordpress效果监控非常简单只需要拷贝你下载的memcache php扩展包中的memcache.php文件到你的站点下即可:

cd memcache-2.2.7
cp memcache.php /data/www/piaoyun.cc/

打开 memcache.php文件

//修改四个地方(以下注释部分),登陆用户名及密码及连接信息:
define('ADMIN_USERNAME','piaoyuncc'); // 此处设置登录用户名
define('ADMIN_PASSWORD','123456'); // 此处设置登录用户密码
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);

$MEMCACHE_SERVERS[] = '127.0.0.1:11211'; // 此处设置连接信息
//$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // 只使用一个进程,此处屏蔽,否则可以设置多个连接信息

修改后保存退出memcache.php文件。访问你的memcache.php,比如我的http://piaoyun.cc/memcache.php,当然密码就不是跟上面一样了。呵呵这些都可以自己设定,我们看下效果图标:(备注运行一段数据后基本会达到97%以上的效率)
01

运行一段时间后,命中率提高了:
02

再过一段时间后查看,命中率又提高了,说明memcache还是很有效果的:
03

在博客圈混,如果你还不知道什么是Gravatar头像,那你真的白混了,自己去补补吧。Gravatar官方的服务器有好几个,都在国外,返回头像时,加载速度不是很理想,所以,将头像缓存到我们的主机空间里,这样加载的速度就会好很多。

调用ssl 头像链接

https还是没被墙的,而且速度还不错,直接调用这个最简单了。
如果你的网站启用了ssl则不需要了,否则functions.php 加入如下代码

function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2">',$avatar);
return $avatar;
}
add_filter('get_avatar', 'get_ssl_avatar');

缓存Gravatar头像到本地提高加载速度

1.在wp-content 的同級目录建立一个文件夹,命名为 avatar ,设置该文件夹的权限为 0755 (如果 0755 不行,就试一下 0777)。
2.准备一张大小适合的默认头像,命名为"default.jpg" ,放在 avatar 文件夹里面。
3.在主题的 functions.php 最后一个 ?> 的前面添加下面的代码即可:

function my_avatar($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) .'avatar/'. $f .'.jpg';
$t = 604800; //设定7天, 单位:秒
if ( empty($default) ) $default = $w. '/avatar/default.jpg';
if ( !is_file($e) || (time() - filemtime($e)) > $t ) //当头像不存在或者文件超过7天才更新
copy(htmlspecialchars_decode($g), $e);
else
$avatar = strtr($avatar, array($g => $w.'/avatar/'.$f.'.jpg'));
if (filesize($e) < 500) copy($default, $e);
return $avatar;
}
add_filter('get_avatar', 'my_avatar');

 

 

最近博客被垃圾评论弄的很烦,有很多博友留言有时都一块删除了。垃圾留言无外乎英文和日文的居多。而Akmet不一定全都认识,所以,飘云决定减轻Akmet的负担,禁止全英文和日文留言。具体方法是在主题的function.php中添加以下代码:

禁止全英文和日文评论

// 禁止全英文和日文评论
function csspicker_comment_post( $incoming_comment ) {
$pattern = '/[一-龥]/u';
$jpattern ='/[ぁ-ん]+|[ァ-ヴ]+/u';
if(!preg_match($pattern, $incoming_comment['comment_content'])) {
err( "写点汉字吧,博主外语很捉急! Please write some chinese words!" );
}
if(preg_match($jpattern, $incoming_comment['comment_content'])){
err( "日文滚粗!Japanese Get out!日本語出て行け!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'csspicker_comment_post');

同理,禁止其他语言代码:

//禁止真主阿拉留言(阿拉伯语,部分)
function csspicker_comment_ar_post( $incoming_comment ) {
$arattern ='/[؟-ض]+|[ط-ل]+|[م-م]+/u';
if(preg_match($arattern, $incoming_comment['comment_content'])){
err( "不要用阿拉伯语!Please do not use Arabic!!من فضلك لا تستخدم اللغة العربية" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'csspicker_comment_ar_post');
//禁止朝鲜半岛幸福人民留言(朝鲜语/韩语)
function csspicker_comment_kr_post( $incoming_comment ) {
$krattern ='/[갂-줎]+|[줐-쥯]+|[쥱-짛]+|[짞-쪧]+|[쪨-쬊]+|[쬋-쭬]+|[쵡-힝]+/u';
if(preg_match($krattern, $incoming_comment['comment_content'])){
err( "不要用韩语/朝鲜语思密达!Please do not use Korean!하시기 바랍니다 한국 / 한국어 사용하지 마십시오!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'csspicker_comment_kr_post');
//禁止人妖部落留言(泰语)
function csspicker_comment_th_post( $incoming_comment ) {
$thattern ='/[ก-๛]+/u';
if(preg_match($thattern, $incoming_comment['comment_content'])){
err( "人妖你好,人妖再见!Please do not use Thai!กรุณาอย่าใช้ภาษาไทย!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'csspicker_comment_th_post');
//禁止北方野蛮人留言(俄语)
function csspicker_comment_ru_post( $incoming_comment ) {
$ruattern ='/[А-я]+/u';
if(preg_match($ruattern, $incoming_comment['comment_content'])){
err( "北方野人讲的话我们不欢迎!Russians, get away!Savage выйти из Русского Севера!" );
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'csspicker_comment_ru_post');

关于垃圾评论,使用WordPress的博主自然熟悉不过,所以也就诞生了很多防垃圾评论的插件,大篱也就在这样的潮流中从露兜博客诞生了,这是我写的第N个插件,也是功能最多最强大的一个,插件全名为WP anti spam dali。大篱可谓是集大成者,用了大篱,其他垃圾评论拦截插件就可以删了(呵呵,大言不惭)。废话少说,先介绍一下大篱可以实现的功能吧:

插件功能

阻止自动发布的评论
只允许中文评论
限定评论字数
防范冒充博主评论
过滤评论中的链接
转义评论中的所有代码
关键字替换

以上所有功能均可在后台的插件选项中开启和关闭,真正实现了人性化的关怀。下面针对几个主要功能做一些简单的介绍:

阻止自动发布的评论

首先我们得了解那些垃圾留言程序是如何不通过人工来发布垃圾评论的,其实wp根目录下的wp-comments-post.php就是一个入口,垃圾留言程序首先自动构造评论内容,然后自动向wp-comments-post.php发送POST请求,传送垃圾评论,wp-comments-post.php接收了这些信息,这样一条垃圾评论就成功的发布到你的博客。

大篱阻止自动评论的原理就是在评论表单中插入一个隐藏域,这个隐藏域的值是动态生成的,只有实际通过人工访问博客文章页面才能获得,而且垃圾留言程序无法模拟,这样WordPress在接受评论之前,先检查这个隐藏域的值是否正确,以判断是否为自动发布的垃圾评论。在通常情况下,阻止自动评论的方式是验证码,但是验证码对用户体验不佳,大篱正好解决了这样的问题。

只允许中文评论

在WordPress blog系统下,有90%+的Spam是由英文字母和拉丁字母组成的,中文博客如果只允许含有中文评论,那么也就阻止了90%+的Spam。此功能是模仿了Some Chinese Please插件来实现的

限定评论字数

排除了计算机程序自动发布的评论,那么剩下的评论都是人发的了,那么人发的评论就不是垃圾评论吗?那也未必,有些人是故意发几个字的灌水内容,或者复制大量内容发布评论,填满你的数据库。最好的做法是限制评论字数。

防范冒充博主评论

如果别人知道了你的昵称和Email,在WordPress中就可以轻松地冒充你进行评论,这样很不好,弄不好会对你的个人和博客名誉造成重大影响。

关键字替换

如果你的网站是搭建在国内的主机上,那么你得注意一下你的网站内容了,必须接受国内机构的监管,如果你的网站如果出现了某某非法关键字,那么你的网站可能很快就要被关停了。评论是一个相对自由的地方,你可能很难监管到,所以你可以将一些非法、不雅、谩骂的关键字给替换掉,这样既可以继续开启评论功能,又可以消除影响。

*使用方法*

下载插件压缩包,解压后,把 wp-anti-spam-dali 文件夹上传到你的WordPress博客的 /wp-content/plugins/ 文件夹下,最后在后台激活即可使用。在后台 – 设置 – 大篱评论过滤,可以设置插件选项,开启关闭一些功能。

WordPress评论过滤插件下载地址:http://wordpress.org/extend/plugins/wp-anti-spamdali/

其实,上面只是方法,最好的识别垃圾留言的东西还是人。飘云一开始就是太依赖akimet了。抵制垃圾留言从我做起哦!!

问题缘由

在群里面看到很多朋友问,wordpress要换域名这么办?后台的设置-常规里修改里域名后,全站打不开了,这是为什么?这么办?

问题解说

其实wordpress换域名需要到数据库进行操作的,首先,你换域名也是有几种情况的;

换空间换域名

如果是上述问题,那么将FTP整站打包外,还需要将数据库里的所有数据表也打包,数据库是进phpmyadmin里打包的,两个都打包后,然后分别上传到新的空间ftp和数据库里,然后进行新的数据库用户名和密码的配置文件配置,也就是打开新发ftp的根目录下找到wp-config.php,打开后自己的新数据库名、数据库用户名、数据库密码进行修改配置,然后到phpmyadmin进行批量换域名操作,说到这里我们就要从第二小点说起了!

仅换域名,没有换空间

打开新的空间的phpmyadmin(数据库控制面板)

然后选择新的数据库名,点击后,进入wp_开头的大于等于11个的表,然后选择选项卡里的sql,如图:
10224JD5-5

wordpress更换域名的几个步骤

然后就是进行sql批量处理的命令了:

UPDATE wp_options SET option_value = replace( option_value, 'http://www.old.com', 'http://www.new.com' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://www.old.com', 'http://www.new.com' ) ;
UPDATE wp_posts SET guid = replace( guid, 'http://www.old.com', 'http://www.new.com' ) ;

old代表旧域名、new代表新域名,将上面的执行语句修改为你们自己的,然后点击执行即可!

衍生问题

每个网站换新域名都不是件随便的事情,如果你不在乎搜索引擎,那么衍生的问题,你可以直接无视,否则,继续看下去吧,我们需要对老域名对新域名进行一个301的重定向,意义就是告诉搜索引擎,旧域名的所有信息都将永久的转移到新域名上,这样才不会被搜索引擎所K掉!301重定向的方法有很多,小2这里就说一个linux的方法吧,在wordpress的根目录下创建一个.htaccess文件,然后将下面的内容放进去即可!

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^piaoyun.cc [OR]
RewriteCond %{HTTP_HOST} ^www.piaoyun.cc [NC]
RewriteRule ^(.*)$ http://www.piaoyun.cc/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

到这一步,就基本全OK了。。。当然换域名的途中也会遇到各种问题,出现问题了可以回帖或者加入我们的技术群群求帮助哈!

wordpress-qiniu-cdn_zpsd75adbce

免费的优质服务谁不爱?凭借 10G 流量 + 10G 存储的免费套餐,七牛云存储快速获得了大批的用户。其中 WordPress 博主占了不小的比例,作为其中的一员,我来说下怎么在不需要插件的情况下让 WordPress 用上七牛云存储 CDN 加速服务。

第一步:创建七牛公开空间

七牛云存储注册地址:https://portal.qiniu.com/

首先,你得有一个七牛账号(这不是废话么~)。什么?你才知道七牛?那还不快注册成为七牛用户,立即享受每月 10G 流量 + 10G 存储的免费服务。

有了账号,你就可以新建空间,我们需要建立一个公开空间。
七牛云存储 - 新建空间

第二步:设置镜像存储

成功建立空间之后,打开该空间的【空间设置】页面。
七牛云存储 - 空间设置

在【域名设置】下,我们知道了该空间的默认域名,你也可以绑定自己的域名,这里不展开讨论。

在【镜像存储】下,点击【一键加速网站】按钮,在弹出的对话框中,【镜像源】填写你的博客地址,确定即可。
七牛云存储 - 加速设置

设置加速后,http://piaoyun.cc/folder/file.jpg 就可以通过 http://piaoyun.cc.qiniudn.com/folder/file.jpg 来访问了。

也就是说,我们只需将 WordPress 输出的内容中,所有的 http://piaoyun.cc/ 域名替换为 http://piaoyun.qiniudn.com/ 就能实现 CDN 加速。(仅作举例,只替换域名是错误的)

第三步:添加 WordPress 代码

在 WordPress 主题目录下的 functions.php 文件中,加入以下代码实现替换功能:

if ( !is_admin() ) {
	add_action('wp_loaded','piaoyun_ob_start');

	function piaoyun_ob_start() {
		ob_start('piaoyun_qiniu_cdn_replace');
	}

	function piaoyun_qiniu_cdn_replace($html) {
		return str_replace('[这里填写博客路径]', '[这里填写七牛空间路径]', $html);
	}
}

以飘云的上传目录 wp-content/uploads/ 文件夹为例,路径就应该替换为如下代码:

return str_replace('http://piaoyun.cc/wp-content/uploads/', 'http://piaoyun.qiniudn.com/wp-content/uploads/', $html);

如果你需要更具体的范围控制(多目录、指定文件类型),可使用以下代码替换上面的 piaoyun_qiniu_cdn_replace 部分:

//修改自七牛镜像存储 WordPress 插件
function piaoyun_qiniu_cdn_replace($html){
	$local_host = 'http://piaoyun.cc'; //博客域名
	$qiniu_host = 'http://piaoyun.qiniudn.com'; //七牛域名
	$cdn_exts   = 'js|css|png|jpg|jpeg|gif|ico'; //扩展名(使用|分隔)
	$cdn_dirs   = 'wp-content|wp-includes'; //目录(使用|分隔)

	$cdn_dirs   = str_replace('-', '\-', $cdn_dirs);

	if ($cdn_dirs) {
		$regex	=  '/' . str_replace('/', '\/', $local_host) . '\/((' . $cdn_dirs . ')\/[^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/';
		$html =  preg_replace($regex, $qiniu_host . '/$1$4', $html);
	} else {
		$regex	= '/' . str_replace('/', '\/', $local_host) . '\/([^\s\?\\\'\"\;\>\<]{1,}.(' . $cdn_exts . '))([\"\\\'\s\?]{1})/';
		$html =  preg_replace($regex, $qiniu_host . '/$1$3', $html);
	}
	return $html;
}

 大功告成!

简单的3步,就能让你的 WordPress 实现 CDN 加速。当然,如果你的需求还包括加速远程图片或刷新缓存等,那么还是老老实实安装七牛镜像存储 WordPress 插件吧。

WordPress上传文件默认是不改变文件名称的,可对中文文件名而言,某些系统、某些浏览器访问是会出现问题滴,那么怎样让Wordpress上传文件自动重命名呐?

以wordpress 3.9.0为例,打开“wp-admin/includes/file.php”文件,找到第313行和452行这段代码:

	// Move the file to the uploads dir
	$new_file = $uploads['path'] . "/$filename";   //主要是修改这行的代码!
	if ( false === @ rename( $file['tmp_name'], $new_file ) ) {
		if ( 0 === strpos( $uploads['basedir'], ABSPATH ) )
			$error_path = str_replace( ABSPATH, '', $uploads['basedir'] ) . $uploads['subdir'];
		else
			$error_path = basename( $uploads['basedir'] ) . $uploads['subdir'];
		return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $error_path ) );
	}

将其修改为

	// Move the file to the uploads dir
	$new_file = $uploads['path'] . "/".date("YmdHis").floor(microtime()*1000).".".$ext;   //主要是修改这行的代码!
	if ( false === @ rename( $file['tmp_name'], $new_file ) ) {
		if ( 0 === strpos( $uploads['basedir'], ABSPATH ) )
			$error_path = str_replace( ABSPATH, '', $uploads['basedir'] ) . $uploads['subdir'];
		else
			$error_path = basename( $uploads['basedir'] ) . $uploads['subdir'];
		return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $error_path ) );
	}

保存,重新上传文件。这样,新上传的文件,就会自动保存为“年月日时分秒+千位毫秒整数”的新文件名,并保存到相应的年月文件夹之下了。

上传后保存的年-月文件夹修改方法:
1.后台设置---多媒体设置如下图:
018
2.以wordpress 3.9.2为例,打开“wp-includes/functions.php”文件,找到第1707行到1714行这段代码:

	$subdir = '';
	if ( get_option( 'uploads_use_yearmonth_folders' ) ) {
		// Generate the yearly and monthly dirs
		if ( !$time )
			$time = current_time( 'mysql' );
		$y = substr( $time, 0, 4 );
		$m = substr( $time, 5, 2 );
		$subdir = "/$y/$m";   //修改这行代码 By:piaoyun.cc
	}

修改上面代码中的:

	$subdir = "/$y/$m";

修改为:

$subdir = "/$y$m";

也就是删除$y和$m之间的 /

最终修改后的代码

	$subdir = '';
	if ( get_option( 'uploads_use_yearmonth_folders' ) ) {
		// Generate the yearly and monthly dirs
		if ( !$time )
			$time = current_time( 'mysql' );
		$y = substr( $time, 0, 4 );
		$m = substr( $time, 5, 2 );
		$subdir = "/$y$m";   //修改这行代码 By:piaoyun.cc
	}

WordPress 更新到3.9.1版本已经有好一段时间了,本来是打算不再升级的,可是老看到后台在提示着要升级,心痒了,就想把 WordPress 升级到 WordPress 3.9.1版本。

以前都是自动升级的,我先把数据备好份,再点自动自动升级,经过漫长的等待之后,没反应,卡住了。怎么回事呢?再刷新一下,再点自动升级,再经过漫长的等待,还是再一次的卡住了。于是想起了上几天空间商做的调整,由于我这个主机算是比较便宜的,所以主机商为了一些网站做采集消耗服务器资源,所以开启了防采集手段,也就是说不能用主机从另外一个服务器上下载东西了。没办法,在这样无赖的事实面前,只能选择了手动升级 WordPress 。

WordPress 手动升级步骤:
第一步、备份程序文件和数据库。由于之前我已经备份过了,所以这里我不用再备份。
第二步、手动升级 WordPress 之前最好先登录后台关闭所有插件,当然不关闭影响也不大,不过全部关闭要好点。
第三步、到 WordPress 官方网站下载最新的 WordPress 版本程序。
第四步、解压安装包更新数据。将网站根目录下 wp-admin 和 wp-includes 两个目录中的文件换成最新下载的程序文件,或者将原来的文件删除后再拷贝新文件进去。wp-content文件夹内的内容不用更改,这里面放的是主题文件,插件文件等。
第五步、替换根目录下除wp-config.php文件以外的文件。(wp-config.php文件是wp配置文件,包括数据库连接设置等)
第六步、运行http://你的博客地址/wp-admin/upgrade.php,将你的博客地址填入路径中执行升级程序。

网上经常见到一些WP博客具有用户中心的功能。用户可以直接登录这个用户中心,而不是进入wordpress的后台来进行文章投稿等操作,这样大大的提升了网站的用户体验,并且有利于用户的囤积。想要实现这个功能其实不难,通过使用WP User Frontend 这款前端用户中心的插件就可以实现。这款插件分为免费版和专业版,这里只介绍免费版。想要专业版的话可以通过免费版的后台面板广告进行了解。

免费版的具体特色如下:

用户可以在前台发布文章
用户可以前台查看和管理他们自己的文章
用户可以前台编辑个人资料
管理员可以设置哪些等级的用户才允许访问WordPress后台(/wp-admin)
可以设置用户的新文章状态,例如 已发布、草稿、等待审核等
当用户发布新文章时,邮件通知管理员
设置是否允许用户编辑和删除他们的文章
允许用户发布文章时上传附件
允许用户设置特色图像
管理员可以前台管理用户(添加用户,删除用户等)
支持收费发布文章(设置用户要发布文章是否需要付费)

WP User Frontend 如何使用呢?

确实,这款插件除了提供安装以外,就没有详细的说明其使用方法了。导致很多用户安装后不知道如何使用,确实难倒了一大部分人。
其实WP User Frontend是通过新建页面+短代码的形式实现工作的。因此使用时,只需要新建一个页面,将对应的短代码填到页面的内容中即可。

使用方法如下:

设置你的WordPress固定链接要包含%postname%,插件才生效。
新建一个名为页面“新文章”,添加简码 [wpuf_addpost] 然后发布,这个页面就可以显示用户自己的文章。如果想显示自定义文章类型,比如 event,可以添加简码 [wpuf_addpost post_type="event"]
新建一个名为“编辑”的页面,添加简码 [wpuf_edit] 然后发布,这个页面就是用来前台编辑文章的。
新建名为“个人资料”的页面,添加简码 [wpuf_editprofile],用来显示和编辑用户个人资料
新建名为“仪表盘”的页面,添加简码 [wpuf_dashboard] 就是前台用户中心主页 。如果要主页显示自定义文章类型的列表,可以使用 [wpuf_dashboard post_type="event"]
要显示所有的订购发布信息,请使用简码 [wpuf_sub_info]
要显示所有的订购发布套餐,请使用简码 [wpuf_sub_pack]
要编辑用户,插入短代码 [wpuf-edit-users]
对于认购的付款页面,以及付款完后的配置, 在插件设置选项卡上中的“PayMents”选项下进行设置。认购付款页面,创建一个新的页面,并在WP用户前端的“贝宝付款页面”选项插入的页ID。

如果需要良好的现实用户中心页面,可以为WP User Frontend的页面单独定制一个模板,这样可以提供更好的使用体验。
关于插件的安装,可以通过WP的后台直接搜索WP User Frontend,在线安装即可。在这里建议是使用官方的英文版,因为英文版可以提供自动升级与更新,减少程序BUG。

关于WP User Frontend Pro 也就是专业版分为好几个版本,分别为:
Personal 版本 49美刀
Business 版本 89美刀
Developer 版本 159美刀

关于版本的对比可以参考官方的说明文档

在各式各样的网络攻击手段层出不穷的今天,如何将恶意攻击者拒之门外,保证Web服务器的安全便成了网站能够稳定地提供服务的最基本保障。当然,网络与服务器安全是一个很大的话题,相对而言,一般性的博客网站也很难成为网络攻击者的目标,但若由此便掉以轻心则显然是不智的,毕竟,如今网络攻击的门槛越来越低,即使一个懵懵懂懂的小P孩使用随处可以找到的攻击工具也可能对我们的网站带来事实上的伤害。

那么,应如何保证我们基于WordPress博客的安全呢?

这一方面要求我们在为博客选择虚拟主机时考虑主机商的硬件设备与技术能力,确定其是否能够稳定地抵御绝大多数的网络攻击,另一方面,也需要我们正确地设置Web服务器中的目录/文件权限,不给恶意攻击者可乘之机。

从理论上来说,要保证Web服务器的安全,最简单的办法便是赋予文件最低的操作权限,比如说所有文件均为只读,而不可写不可执行,这样,攻击者便会无从下手。但在实际应用中,情况并非这么简单,以使用WordPress搭建的博客网站来说,必须赋予某些文件的可写、可执行权限,因为WordPress自身在运行过程中需要存取、修改某些文件才能实现网站的服务功能。

对Wordpress目录/文件权限的设置,实际上就是在网站的可用性、易用性与安全性之间寻得一个恰当的平衡。下面我们具体来讨论一下(以Linux/Apache平台、WordPress位于网站根目录为例):

/wp-admin/: WordPress管理目录,其中的所有文件应该只赋予所有者可写权限;

/wp-includes/:WordPress 支持库目录,其中的所有文件应该只赋予所有者可写权限;

/wp-content/:这个目录下的文件权限设置相对复杂了些,让我们分别来看:

/wp-content/themes/:对于WordPress主题目录下的文件,如果您从不使用WordPress内置的主题编辑器,那么可以简单地设置其仅允许所有者可写;

当然,对大部分朋友来说,可能常常需要修改主题如css、模板文件等,这就应赋予这些文件Apache运行用户(一般为nobody)所在组的可写权限。而“/wp-content/plugins/”目录下存放的插件文件,同样也需视情况而定,一般而言,大部分插件可以只赋予所有者可写权限,但同样也存在部分插件需赋予Apache运行用户(一般为nobody)所在组的可写权限。

而如果要使用WordPress内置的Database Backup插件,则需要将整个“/wp-content/”目录赋予可写的权限,一般为755,在某些主机设置中甚至可能需要更高的777。

/”:WordPress根目录,应该只赋予所有者可写权限;不过,如果您的博客使用Permalinks,需要WordPress来自动生成、应用rewrite规则,则必须赋予Apache 对“.htaccess”的操作权限。此外,如其中内含连接wordpress 数据库的用户名与密码的“wp-config.php”,则应赋予更严格的操作控制,禁止遍历,极端情况下可直接将其设为600。

WordPress的用户级别分别是administrator,editor,auth,contributor和subscriber,权限和代表的意思分别是:

administrator:管理员帐号,和Admin一样, 拥有对整个后台的所有操作权限。
Editor:编辑者帐号,可以对博客内的所有文章, 页面, 留言进行编辑, 可以发表文章。
Author:作者帐号,可以发表文章, 但只能对自己文章的进行编辑。
Contributor:贡献者帐号,可以投递文章, 只能对自己的文章进行编辑. 和作者帐号不同的是, 作者是一个博客的一员, 而贡献者可能是一个热心网友注册的帐号, 偶尔投递一两篇文章或评论. 但这些文章要在管理员审核之后才会被发表出来。
Subscriber:订阅用户帐号,对后台只有浏览功能, 以及设置自己的个人信息。

更详细的wordpress用户角色权限请看下图

WordPress用户权限详解这样应该是比较清楚了吧。

越来越多站长使用WordPress搭建门户型网站,WordPress获取作者资料信息函数the_author_meta()显得日益重要。因为通过该模板标签函数,可以在前台调用显示注册用户的相关信息,如用户登陆名、用户网站地址、用户注册时间、用户昵称等。函数的具体用户看以下介绍:

用法:

<?php the_author_meta( $field, $userID ); ?>

参数说明:
1、$field(字符串)将要显示的用户信息的字段名称(这些在数据库中都可以找到)。以下是常用的:

用户登录名:user_login
用户登录密码:user_pass
用户昵称:user_nicename
用户邮箱地址:user_email
用户网站地址:user_url
用户注册时间:user_registered
用户状态:user_status
作者显示的名称:display_name
作者昵称:nickname
作者名字:first_name
作者姓氏:last_name
作者描述:description
用户等级:user_level
用户名字:user_firstname
用户姓氏:user_lastname
用户描述:user_description

2、ID:用户ID值

实例:

<?php  echo the_author_meta( 'user_email' ); ?>
//获取作者的邮箱地址
<?php  echo the_author_meta( 'user_nicename' ); ?>
//获取作者的昵称

提醒:如果该函数在文章主循环(Loop)中,则不必指定作者的ID值,标签所显示的就是当前文章作者的内容。如果在主循环(Loop)外,则需要指定用户ID值。如果需要获取用户信息但是不想显示出来(比如用在php方法中),请使用get_the_author_meta()方法。

今天看见标签"php"的别名是"php-2",看着这个url很别扭,需要将其改正。于是在后台"文章","标签"中进行修改,显示别名已经被使用,无奈。但是发现mysql在分类目录和标签中都一样,没有冲突。于是就自己探索着怎么修改。

有两种方法可以让"分类目录(category)"和"标签(tag)"的别名一样。

第一种方法,在"分类目录"中添加目录,只写名字和别名就行了,描述就先不写了,然后在"标签"中添加一个标签,名字和别名和目录中的一样,这样创建的标签就使用的是分类目录是同一个对象了(即引用数据库中表"wp_terms"中的同一行记录)。

第二个方法是,在数据库中进行更改。

表"wp_terms"表中存放这是"分类目录(category)"和"标签(tag)"的记录,在这里是不能区分这两个的哪个是标签哪个是目录的。只有在表"wp_term_taxonomy"中数据才是区分"分类目录"(category)和"标签"(post_tag)。

表wp_terms结构:

 term_id  name  slug  term_group
17  php  php  0

看看表wp_terms的结构:

"term_id":表wp_terms的主键(Primer Key)索引值,在其他表中可以引用这个值作为外键。
"name":该记录(关系)的名字,用于显示其名字。不做链接使用。
"slug":该记录的别名,仅在在url中显示。
"term_group" :目前还不知道。

表wp_term_taxonomy结构:

 term_taxonomy_id  term_id  taxonomy  description  parent  count
 17  17  category  0  0
 48  17  post_tag  0  0

具体看看表wp_term_taxonomy的结构:

"term_taxonomy_id":为表"wp_term_taxonomy"的主键(Primer key),这个表中的索引值,不能有重复。
"term_id":表"wp_terms"的引用,他的取值只能在表"wp_terms"中取值。
"taxonomy":表示分类的意思,"category"表示这条记录(关系)是"分类目录(category)",的意思。而"post_tag"表示的是这条记录(关系)是"标签(tag)"的意思。
"description":用于表示该记录的详细信息,具体描述目录或者标签。
"parent":分类目录(category)的父目录,对文章标签(post_tag)则无效。
"count" :该记录被文章的引用次数。

我们只要将表wp_term_taxonomy中的两条记录的"taxonomy"对应的category和post_tag中的term_id指向统一个对象,那么"分类目录"和"标签”就使用统一个对象了,因此他们的别名也就相同了。

发现原来是之前的name使用的是大写,后台在tag中输入的是小写,导致两个不一样,所以就出现了不同的两个id,我还是直接对数据库进行更改的。