Browse Tag: wordpress

wordpress一些常用的常量

ABSPATH :网站根目录的绝对路径
WP_CONTENT_DIR : wp-content目录的磁盘路径
WP_CONTENT_URL :wp-content目录的URL
TEMPLATEPATH : 当前主题所在目录路径
STYLESHEETPATH : 当前主题样式所在目录路径
WP_PLUGIN_DIR : 定义插件目录的磁盘路径
WP_PLUGIN_URL : 定义插件目录的URL
WP_LANG_DIR : 自定义语言包的路径
WP_POST_REVISIONS : 关闭 WordPress 版本修订功能
AUTOSAVE_INTERVAL 定义自动保存的时间

wordpress用户登陆注册核心代码

wordpress虽然主要用在博客网站上,但是经过调整也是完全可以用作cms资讯类网站中,对于资讯网站用到的最多的功能肯定就是用户登陆注册了,今天来给大家分享一下wp用户登陆注册的知识,下面代码中我已经表明了要注意的地方了,以下就是wordpress用户登陆注册的核心代码

  1. <?php
  2.             //current_user_can()wp自带判断登陆用户的权限
  3.              if (!(current_user_can(‘level_0’))){ ?>
  4.                 <form action=“<?php echo get_option(‘home’); ?>/wp-login.php” method=“post” class=“wpuserform”>
  5.                     欢迎来到<?php bloginfo(name) ?>
  6.                     用户名 <input type=“text” name=“log” id=“log” class=“user_log” title=“用户名” value=“” size=“20” />
  7.                     密码 <input type=“password” name=“pwd” id=“pwd” class=“user_pwd” title=“密码” value=“” size=“20” />
  8.                     <input type=“submit” name=“submit” id=“login” title=“登录” value=“登录” />
  9.                     <?php if (get_option(‘users_can_register’)) { ?><a href=“<?php echo site_url(‘wp-login.php?action=register’, ‘login’) ?>”>  立即注册</a><?php }?>
  10.                     <label id=“rememberlb” for=“rememberme”><input name=“rememberme” id=“rememberme” type=“checkbox” checked=“checked” value=“forever” />  自动登陆 </label>
  11.                     <input type=“hidden” name=“redirect_to” value=“<?php echo $_SERVER[‘REQUEST_URI’]; ?>” />
  12.                      <a href=“<?php echo get_option(‘home’); ?>/wp-login.php?action=lostpassword”>  找回密码</a>
  13.                 </form>
  14.                     <!–user_identity –>
  15.             <?php } else { global $user_identity$user_level; ?>
  16.                 欢迎您, <strong><?php echo $user_identity ?></strong>!
  17.                 <?php if (get_option(‘users_can_register’)) { ?><a href=“<?php bloginfo(‘siteurl’);?>/wp-admin/profile.php”>[个人中心]</a><?php }?>
  18.                 <a href=“<?php echo wp_logout_url( get_permalink() ); ?>”>[退出]</a>
  19.             <?php }?>

wordpresss实现带头像的最新评论列表实例

wordpress默认的最新评论显得太单调了,也不是很美观,并且也不能按照我们的需求列表显示最新评论的内容,今天分享给大家一段修改方便的带有头像的最新评论列表代码,添加方法如下:

1、打开需要显示最新评论列表的文件(一般在网站的侧边栏sidebar.php中);

2、在合适的位置添加以下代码:

  1. <?php   
  2. $show_comments = 8; //评论数量   
  3. $my_email = get_bloginfo (‘admin_email’);    
  4. $i = 1;   
  5. $comments = get_comments(‘number=50&status=approve&type=comment’);    
  6. foreach ($comments as $rc_comment) {   
  7.     if ($rc_comment->comment_author_email != $my_email) {   
  8.         ?>   
  9.         <li><?php echo get_avatar($rc_comment->comment_author_email,30); ?><a href=“<?php echo get_permalink($rc_comment->comment_post_ID); ?>#comment-<?php echo $rc_comment->comment_ID; ?>”><?php echo mb_strimwidth(strip_tags(apply_filters(‘convert_smilies’, $rc_comment->comment_content)), 0, 34,” &raquo;”); ?></a>Post:<?php echo $rc_comment->comment_date; ?></li>   
  10.         <?php   
  11.         if ($i == $show_commentsbreak;    
  12.         $i++;   
  13.     }    
  14. }    
  15. ?>  

3、修改样式用于符合当主题风格;

4、保存文件并上传覆盖。

这样就大功告成了,代码调用avatar头像,如果填写的邮箱没有设置avatar头像,会调用wordpress默认评论头像。如果你不想在侧边栏的评论列表中显示作者自己的评论,可以找以上代码中找到:

  1. $comments = get_comments(‘number=50&status=approve&type=comment’);   

并修改为以下代码:

  1. $comments = get_comments(‘number=50&status=approve&type=comment&user_id=0’);  

WordPress后台删除不需要的侧边栏菜单

 本文是WordPress企业建站系列教程的第一篇文章,需要说明的是,如果想你学习这个企业建站的系列教程,需要你有一点点的WordPress主题或PHP开发基础,没有基础的也可以依样画葫芦,出错了可以给我留言。

自定义后台的侧边栏顶级菜单

     首先让我们看看,什么是后台的侧边栏菜单:

     上图就是使用管理员账号登陆后看到的侧边栏所有的菜单项,WordPress给不同角色的用户定义了不同功能的使用权限,所以不同角色的用户后台所看到侧边栏菜单项都是不一样的。这个时候需求又来了,有些时候即使是管理员,部分菜单也是用不到了,例如用WordPress来建一个企业介绍性的网站,该站点根本没有添加评论功能,那么侧边栏的评论菜单是用不着的,如果让企业用户看到,他们会感到很迷惑。所以最好的办法是,根据实际情况,把不该有的侧边栏管理菜单删掉。具体实现办法是在当前主题的functions.php 第一个 <?php 后面添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
function remove_menus() {

global $menu;

$restricted = array(__(‘Dashboard’), __(‘Posts’), __(‘Media’), __(‘Links’), __(‘Pages’), __(‘Appearance’), __(‘Tools’), __(‘Users’), __(‘Settings’), __(‘Comments’), __(‘Plugins’));

end ($menu);

while (prev($menu)){

$value = explode(‘ ‘,$menu[key($menu)][0]);

if(strpos($value[0], ‘<‘) === FALSE) {

if(in_array($value[0] != NULL ? $value[0]:“” , $restricted)){

unset($menu[key($menu)]);

}

}

else {

$value2 = explode(‘<‘, $value[0]);

if(in_array($value2[0] != NULL ? $value2[0]:“” , $restricted)){

unset($menu[key($menu)]);

}

}

}

}



if ( is_admin() ) {

// 删除左侧菜单

add_action(‘admin_menu’, ‘remove_menus’);

}

自定义要去除的顶级菜单

     以上代码核心部分是一个函数remove_menus(),然后通过WordPress的动作接口函数add_action来执行remove_menus函数。在remove_menus函数中,通过$restricted数组来定义需要删除哪些菜单项,以上$restricted数组提供了全部菜单项,也就是说如果你全部将以上代码不做修改地复制到functions.php,那你的WordPress后台就没有任何菜单了,你应该根据实际需要去除菜单,下面讲讲$restricted各个数组项对应的菜单:

  • __(‘Dashboard’) : 控制板菜单
  • __(‘Posts’) : 文章
  • __(‘Media’) : 媒体
  • __(‘Links’) : 链接
  • __(‘Pages’) : 页面
  • __(‘Comments’) : 评论
  • __(‘Appearance’) : 外观
  • __(‘Plugins’) : 插件
  • __(‘Users’) : 用户
  • __(‘Tools’) : 工具
  • __(‘Settings’) : 设置

     例如你只想去除评论工具菜单,你只需改写以上代码第3行的$restricted数组:

1
$restricted = array(__(‘Comments’), __(‘Tools’));

删除不必要的子菜单

     WordPress后台的顶级菜单下面还有子菜单,当然有些子菜单是用不到的,我们也可以将其删除,WordPress 3.1以后的版本只需用到一个函数remove_submenu_page( $menu_slug, $submenu_slug ),这里有两个参数,$menu_slug是子菜单所在顶级菜单的缩略名,$submenu_slug为子菜单的缩略名,那如何获得这两个缩略名呢?例如,点击顶级菜单设置,链接地址类似:

http://example/wp-admin/options-general.php

     那么顶级菜单设置的缩略名为options-general.php,也就是去除http://example/wp-admin/后剩下的东西,依次类推;接着点击顶级菜单设置下面的子菜单隐私,会打开以下网址:

http://example/wp-admin/options-privacy.php

     那么子菜单隐私的缩略名为options-privacy.php,好了,就这么简单,下面是实现代码,:

1

2

3

4

5

6

7

8

9

10

11
function remove_submenu() {

// 删除”设置”下面的子菜单”隐私”

remove_submenu_page( ‘options-general.php’, ‘options-privacy.php’ );



// 删除”外观”下面的子菜单”编辑”

remove_submenu_page( ‘themes.php’, ‘theme-editor.php’ );

}



if ( is_admin() ) {

add_action(‘admin_init’,‘remove_submenu’);

}

根据用户角色去除菜单

     如果你想按用户角色来去除相应的侧边栏菜单,那就再做一下用户等级的判断就可以了,给第11行的add_action添加判断,改写成:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24
function remove_menus() {

global $menu;



// 这里$restricted设置了评论和工具菜单

$restricted = array(__(‘Comments’), __(‘Tools’));

end ($menu);

while (prev($menu)){

$value = explode(‘ ‘,$menu[key($menu)][0]);

if(in_array($value[0] != NULL?$value[0]:“” , $restricted)){unset($menu[key($menu)]);}

}

}



function remove_submenu() {

remove_submenu_page( ‘options-general.php’, ‘options-privacy.php’ );

}



global $current_user;

get_currentuserinfo();



//如果当前用户的等级小于3,那么就删除对应的菜单

if ($current_user->user_level < 3 && is_admin()) {

add_action(‘admin_menu’, ‘remove_menus’);

add_action(‘admin_init’,‘remove_submenu’);

}

     在WordPress后台 – 用户那里,管理员可以查看 / 编辑用户的角色,以下是用户角色和其等级的对应关系:

  • 0 级对应 订阅者
  • 1 级对应 投稿者
  • 2 – 4 级对应 作者
  • 5 – 7 级对应 编辑
  • 8 – 10 级对应 管理员

     WordPress 3.0 之后将逐渐弃用用户数字等级,推荐使用户权限,可以用函数current_user_can()来判断用户权限。

使用超简单的插件

     下面推荐一个使用超简单的插件,不需要任何编码,只需拖拖鼠标就可以实现上面所说的大部分功能。插件名称是:Admin Menu Editor,可以点此前往WordPress官方下载,启用后到设置 – Menu Editor,就可以编辑后台的菜单了,还可以添加外链菜单,可以调整菜单顺序等等,剩下的你自己体验吧!

更多的WordPress菜单项设置,请阅读以下文章(英文):

Remove WordPress Admin Menu Without Affecting WordPress Core System

http://www.ludou.org/remove-admin-menu-in-wordpress.html

如何修改 WordPress 数据库前缀

我们知道 WordPress 的数据库表,可以设置前缀,默认是 wp_,很多同学也就默认用了 wp_,如果某种原因(比如提高安全性)要修改的 WordPress 数据的前缀,我们应该怎么做?

开始之前

修改数据是一件风险很高的工作,开始之前必然就是做好数据库备份:

WordPress Database Backup 备份数据库

phpMyAdmin 导出数据库

在 wp-config.php 修改数据库前缀

打开你的 wp-config.php 文件,把数据库前缀 wp_ 改成你想要的前缀,比如 wpdx_。

1
$table_prefix  = 'wpdx_';

修改数据表名字

打开 PHPMySQL,找到你的数据库,然后执行以下 SQL,把所有数据库表前缀从 wp_ 改成 wpdx_ 。

1
2
3
4
5
6
7
8
9
10
11
RENAME table 'wp_commentmeta' TO 'wpdx_commentmeta';
RENAME table 'wp_comments' TO 'wpdx_comments';
RENAME table 'wp_links' TO 'wpdx_links';
RENAME table 'wp_options' TO 'wpdx_options';
RENAME table 'wp_postmeta' TO 'wpdx_postmeta';
RENAME table 'wp_posts' TO 'wpdx_posts';
RENAME table 'wp_terms' TO 'wpdx_terms';
RENAME table 'wp_term_relationships' TO 'wpdx_term_relationships';
RENAME table 'wp_term_taxonomy' TO 'wpdx_term_taxonomy';
RENAME table 'wp_usermeta' TO 'wpdx_usermeta';
RENAME table 'wp_users' TO 'wpdx_users';

修改 Options 表中的数据

使用下面语句把 options 表中的 option_name 以 wp_ 开头的值改成 wpdx_ 开头。

1
SELECT REPLACE(option_name, 'wp_', 'wpdx_') FROM wpdx_options;

修改 UserMeta 表中的数据

使用下面语句把 UserMeta 表中的 meta_key 以 wp_ 开头的值改成 wpdx_ 开头。

1
SELECT REPLACE(meta_key, 'wp_', 'wpdx_') FROM wpdx_usermeta;

搞定,收工!

如何提高WordPress站点安全?

如何提高WordPress站点安全,是我们每个WordPress用户需要重视的问题。网站安全涉及主机服务器和WordPress源码等方面,倡萌结合自己的一些经验,好好总结了这方面的一些建议,希望能给大家一点帮助。

1.选择安全可靠的主机

谨慎选择一款安全可靠的主机,不要使用免费主机和劣质主机。免费主机只适合用来学习程序和建站方法,但是倡萌一直不建议使用免费主机来托管正式上线的网站。当然了,最好也不要使用那些特别廉价,管理经验不足的主机商的服务。

2.升级到WordPress最新版

只从WordPress官方下载源码,不要到第三方网站下载。尽可能升级到WordPress最新版,及时修补程序漏洞,包括WordPress核心源码、WordPress主题以及WordPress插件。

3.使用官方WordPress主题和插件

这里所说的官方,一是WordPress官方,二是主题或插件开发者的官方,尽量避免使用“破解”版主题、插件,慎用网上传播的原本是收费,但是被人恶意提供免费下载的主题、插件。

4.修改数据库默认前缀 wp_

很多朋友安装WordPress都没有修改数据库前缀,如果你打算修改默认的前缀 wp_ ,请根据 如何修改 WordPress 数据库前缀 来修改。

5.修改默认的用户名 admin

WordPress 3.* 以上已经支持安装时自定义登录用户名,如果你使用默认的admin,建议你根据下面的方法进行修改:

方法一:后台新建一个用户,角色为管理员,然后使用新用户登录,删除默认的 admin 用户。

方法二:登录phpmyAdmin,浏览当前数据库的 wp_users 数据表,将 user_login 和 user_nicename 修改为新用户名。

同时建议修改 “我的个人资料”中的的昵称,然后设置“公开显示为”非用户名的其他方式:

6.使用高级密码,经常更换密码

建议使用含 大写字母、小写字母、数字和其他符号 的复杂密码,比如 nuH4j&*aHG%dMz ,避免使用生日、手机号、QQ号等。

7.隐藏WordPress版本信息

默认情况下会在头部输出WordPress版本信息,你可以在主题的 functions.php 最后一个 ?> 前面添加:

1
2
3
4
5
//隐藏版本号
function wpbeginner_remove_version() {
return '';
}
add_filter('the_generator', 'wpbeginner_remove_version');

8.修改wp-admin目录的访问权限

你可以通过限定IP地址访问WordPress管理员文件夹来进行保护,所有其他IP地址访问都返回禁止访问的信息。另外,你需要放一个新的.htaccess文件到wp-admin目录下,防止根目录下的.htaccess文件被替换。

9.定期备份网站数据

可以借助WordPress备份插件进行自动备份或手动备份:

WordPress数据库定时备份插件:WordPress Database Backup

使用WordPress自带导出导入功能备份和恢复网站

WordPress克隆/备份/搬家插件:WP Clone

WordPress超强备份插件:BackWPup(支持FTP/Email/本地/网盘)

10.安装安全插件

WordPress Firewall 2

该插件可以帮助你识别/阻止一些有效的攻击,例如 目录扫描、SQL注入、WP文件扫描、PHP EXE扫描 等,并可将其定向到404或者首页。如果有问题还可以通过电子邮件通知你处理,还可以阻止一些IP的访问。

Better WP Security

由于大多数的WP网站存在插件漏洞、弱口令、过时的插件/程序,隐藏这些漏洞可以更好的保护网站,例如保护登录和管理区(控制面板?仪表盘?)。

Login Lockdown

这个插件可以记录失败的登录尝试的IP地址和时间,若是来自某一个IP地址的这种失败登录超过一定条件,那么系统将禁止这一IP地址继续尝试登录。

Limit Login Attempts

Limit Login Attempts 限制登录尝试的次数来防止暴力破解,增强 WordPress 的安全系数。

WP Security Scan

该插件会自动按照以上的安全建议对WordPress进行安全扫描,查找存在的问题。

相关阅读:WordPress站点被挂马?如何预防、检测和应对?

如何修改 WordPress 的默认 Gravatar 头像

昨天 @Cain 问倡萌,如何修改 WordPress 的默认 Gravatar 头像,也就是说,如果访客有自己的Gravatar头像就显示自己的,如果没有就显示网站指定的。

熟悉WordPress的朋友都应该知道,在 后台 – 设置 – 讨论 下,可以设置默认的 Gravatar 头像,但是自带的那几种图标实在是不敢恭维,好在WordPress 提供了 avatar_defaults 这个挂钩,允许我们添加自定义头像,下面倡萌就分享2种修改的方法。

方法一:使用代码自定义 WordPress 的默认 Gravatar 头像

在你的主题的 functions.php 的最后一个 ?> 前面添加下面的代码:

1
2
3
4
5
6
7
add_filter( 'avatar_defaults', 'newgravatar' );  

function newgravatar ($avatar_defaults) {  
    $myavatar = get_bloginfo('template_directory') . '/images/wpdaxue-gravatar.jpg';  
    $avatar_defaults[$myavatar] = "WordPress大学 默认头像";  
    return $avatar_defaults;  
}

修改提示:

1.第四行代码是头像的URL地址,以上为现用主题的images文件夹下的wpdaxue-gravatar.jpg,请根据实际修改;

2.第五行是自定义头像名称,以上为 WordPress大学 默认头像 ,请自行修改。

保存好以后,就可以在 后台 – 设置 – 讨论 下看到新增的头像,将其设置为默认即可:

wpdaxue.com-201303388

方法二:使用 Add New Default Avatar 插件

如果你不想折腾代码,也可以直接在后台安装 Add New Default Avatar 插件,启用后,就可以在 后台 – 设置 – 讨论 下添加自定义头像,非常简单。

原文链接:http://www.wpdaxue.com/change-wordpress-default-gravatar.html

WordPress 伪静态规则总结(IIS/Apache/Nginx)

不少朋友总是询问 WordPress 如何添加伪静态规则,今天倡萌就总结一下 IIS/Apache/Nginx 三种环境下的伪静态规则,希望对大家有所帮助。

检测主机是否支持伪静态的方法:在WP后台 > 设置 > 固定链接,设置为 默认带?的那种结构,然后访问任何一篇文章,如果出现 404 错误,说明你的主机当前不支持 WordPress 伪静态。

IIS伪静态规则

IIS 环境是 Windows 主机常用的服务器环境,新建一个 txt 文件,将下面的代码添加到文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
# 3600 = 1 hour

CacheClockRate 3600
RepeatLimit 32

# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through

RewriteRule /tag/(.*) /index\.php\?tag=$1
RewriteRule /software-files/(.*) /software-files/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

然后另存为 httpd.ini 文件,上传到WordPress站点的根目录即可。

Apache伪静态规则

Apache是 Linux 主机下常见的环境,现在一般的 Linux 虚拟主机都采用这种环境。新建一个 htaccess.txt 文件,添加下面的代码:

1
2
3
4
5
6
7
8
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

然后上传到 WordPress 站点的根目录,重命名为 .htaccess 即可

Nginx伪静态规则

Nginx环境一般是Linux 主机 VPS或服务器用户用的比较多,这些用户一般都会自己配置Nginx,或者有专门的人帮你配置,打开 nginx.conf 或者某个站点的配置环境,比如 wpdaxue.com.conf(不同人配置的不一样),在  server   { } 大括号里面添加下面的代码:

1
2
3
4
5
6
7
8
9
10
11
location / {
if (-f $request_filename/index.html){
                rewrite (.*) $1/index.html break;
        }
if (-f $request_filename/index.php){
                rewrite (.*) $1/index.php;
        }
if (!-f $request_filename){
                rewrite (.*) /index.php;
        }
}

保存,重启 Nginx 即可。

原文链接:http://www.wpdaxue.com/wordpress-rewriterule.html

wordpress怎么获取当前分类名称或别名

今天在给客户制作主题的过程中有一个地方要用到获取当前分类,大江百度了一下发现网上说的教程都乱,于时集合总结了一下分享给大家。大家在设计主题时经常会需要调用当前分类或当前文章所属分类名称的需求,一般大家都是使用:

1
<?php the_category(); ?>

来调用分类名称与连接的,但是这样并不能单独的调用出分类的名称,那么怎样单独的调用出wordpress的分类名称呢?方法如下:

1、如果是在分类页面调用当前分类名称则使用以下代码:

1
<?php single_cat_title(); ?>

2、如果是在在文章页想调用出当前文章所属分类的名称:

代码⑴

1
2
3
4
5
6
<?php
foreach((get_the_category()) as $category)
{
echo $category->cat_name;
}
?>

代码⑵

1
2
3
4
<?php
$category = get_the_category();
echo $category[0]->cat_name;
?>

代码⑶

1
<?php $thiscat = get_category($cat); echo $thiscat ->name;?>

另外说个如何获取分类别名的方法:

1
2
3
4
5
if(is_category()) {
$cat = get_query_var('cat');
$yourcat = get_category($cat);
echo "该分类别名为" $yourcat->slug;
}

 

  • 1
  • 2