鲍成龙
不如意事常八九,可与语人无二三。
鲍成龙

register_taxonomy()函数为自定义的Post type添加自定义分类功能。

语法结构

<?php register_taxonomy($taxonomy, $post_type, $args); ?> //为自定义的Post type添加自定义分类功能

参数

$taxonomy添加的类的名称

$post_type注册的自定义类型

$labels的详细参数

‘name’ – 分类的通用名称,通常为复数
‘singular_name’ – 此分类法的一个对象的名称
‘search_items’ – 搜索项目文字。默认为__(’搜索标签’)或__(’搜索类别’)
‘popular_items’ – 热门项目文字。默认为__(’热门标签’)或null
‘all_items’ – 所有项目文本。默认为__(’所有标签’)或__(’所有类别’)
‘parent_item’ – 父项文本。此字符串不用于非分层分类法,例如帖子标记。默认值为null或__(’父类别’)
‘parent_item_colon’ – 与结果相同parent_item,但:结尾为冒号,__(’父类别:’)
‘edit_item’ – 编辑项目文本。默认为__(’编辑标签’)或__(’编辑类别’)
‘update_item’ – 更新项目文本。默认为__(’更新标签’)或__(’更新类别’)
‘add_new_item’ – 添加新项目文本。默认为__(’添加新标签’)或__(’添加新类别’)
‘new_item_name’ – 新项目名称文本。默认为__(’新标签名称’)或__(’新类别名称’)
‘separate_items_with_commas’ – 分类项元框中使用逗号文本的单独项目。此字符串不用于分层分类法。默认值为__(’带逗号的单独标签’)或null
‘add_or_remove_items’ – 添加或删除项目文本,并在禁用JavaScript时在元框中使用。此字符串不用于分层分类法。默认值为__(’添加或删除标记’)或null
‘choose_from_most_used’ – 从分类法元框中使用的最常用文本中进行选择。此字符串不用于分层分类法。默认值为__(’从最常用的标签中选择’)或null
‘menu_name’ – 菜单名称文字。此字符串是提供菜单项的名称。默认为name的值

$args的详细参数

public- 否应在管理UI中公开此分类

  1. show_ui – 是否生成用于管理此分类的默认UI。默认值:如果未设置,则默认为public参数的值
  2. show_in_nav_menus – true使此分类在导航菜单中可供选择,默认值:如果未设置,则默认为public参数的值
  3. show_tagcloud – 是否允许Tag Cloud小部件使用此分类,默认值:如果未设置,则默认为show_ui参数的值
  4. 增加几个参数类型。分别是
    show_in_rest ,rest_baserest_controller_class。第一个参数可以理解为是否在 REST API 中显示,所以参数值必须是 true;第二个参数可以理解为通过哪个 REST API 显示数据,所以参数值最好是自定义文章类型的别名,且必须是英文或是拼音,比如:bbs;第三个参数可以理解为采用哪个 REST API 的控制类,所以参数值必须是使用文章的控制类:WP_REST_Posts_Controller。加上这三个参数项,基本上自定义文章类型的 REST API 就创建成功了。
<?php$labels = array(
        'name' => '产品分类',
        'singular_name' => '产品分类',
        'search_items' =>  '搜索产品' ,
        'all_items' => '所有产品' ,
        'parent_item' => null,
        'parent_item_colon' => null,
        'edit_item' => '编辑产品' ,
        'update_item' => '更新产品' ,
        'add_new_item' => '添加产品' ,
        'new_item_name' => '新产品',
        'separate_items_with_commas' => '' ,
        'add_or_remove_items' => '添加或删除',
        'choose_from_most_used' => '从经常使用的类型中选择',
        'menu_name' => '产品分类',
    );
    register_taxonomy(
        'products', array('product'),
        array(
            'labels' => $labels,
            'hierarchical' => true,
            'show_ui' => true,
            'query_var' => true,
        )
    );?>

前台调用

自定义分类法的分类列表页面模板文件是taxonomy.php或taxonomy-{taxonomy_slug}.php,taxonomy.php是所有自定义分类法默认调用的模板文件,taxonomy-{taxonomy_slug}.php则是指定自定义分类法调用的模板文件,比如本教程中创建的自定义分类法products,使用taxonomy-products.php文件即可指定调用。

TIPS

强调一点,添加过新的自定义分类之后一定要更新下固定连接,只需要点击保存设置就行,不然前台是调用不出来的。

 

鲍成龙

上网的时候我们会发现很多网站都有繁体版本,通过导航栏上的一个按钮就可以把网页上的文字从简体中文变成繁体中文。同时,通过浏览博客的访客地域统计发现有相当多的台湾以及香港地区的读者,而他们很可能不能识别大多数简繁体不同的中文,因此为博客添加一个简繁转换是非常必要的。虽然谷歌浏览器可以添加一个语言转换插件或者自带语言转换功能,但一来转换有时非常不稳定,可能出现服务器错误,而来并非所有访客都使用Chrome浏览器。因此我介绍的这个简繁转换,是通过js的方式实现的。下面我就以WordPress为例说明一下。

 

1、下载简繁转换js文件

 

下载地址:

[button url="https://baochenglong.cn/wp-content/uploads/2020/03/zh-cn-tw.zip" types="down"]zh-cn-tw[/button]

2、将下载的 zh-cn-tw.js 文件放置网站服务器一定目录下,例如我放在使用的主题的javascripts文件夹下

 

3、打开主题的 footer.php 文件,添加以下代码引入js

<script src="/zh-cn-tw.js"></script>

当然,src值是根据你放置js位置决定的

 

4、在所需要添加简繁转换按钮的地方加入以下代码

<a id="StranLink" class="class">繁體</a>

这个 id 一定要是 StranLink,class由自己决定,并可以自定义样式,或者也可以用一个 div 包围起来再自定义样式。

鲍成龙

有时候我们需要用到is_home()来判断是不是wordpress的首页,从而进行一些相关配置,但是有一点需要注意,当你的首页不是默认的index.php的时候,比如是在后台指定了一个页面。这种情况下is_home也会失效。

也就是说这样子的情况下就不能再用is_home来判断了。而是要用is_front_page来进行判断。is_front_page是判断当前页是不是指定的首页。

记录

 

鲍成龙
<script type="text/javascript">
setTimeout(function(){//黑衣探花定时器 
$(".jinsom-slider").css("display","none");//将图片的display属性设置为none
},
5000);//设置5000毫秒即5秒
</script>

鲍成龙
html{
 filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
    -webkit-filter: grayscale(100%);
    -moz-filter: grayscale(100%);
    -ms-filter: grayscale(100%);
    -o-filter: grayscale(100%);
    filter: grayscale(100%);
    filter: gray;
}
鲍成龙

域名邮箱申请地址:http://ym.163.com/

 

路径:登陆模块→邮件配置

 

邮件主机:smtp.ym.163.com

 

普通端口:25

 

SSL端口:994

 

邮件授权码/密码:填写你的域名邮箱登陆密码即可

 

鲍成龙

 

the_time()和data()区别是返回类型不停,前者是void,后者是string。两者的使用方法基本相同。

WordPress The_time()的使用方法

代码示例1:

//wordpress the_time()函数 
<? php the_time('Y年n月j日'); ?>

 

输出效果:

2020年1月16日

the_time()函数的传入值里除了几个字母有讲究, 其它的内容可以完全自定义,下面是为大家总结的wordpress the_time()函数各参数的表示意义,请注意字母的大小写往往代表不同的含义

  • 参数z:    描述:天数                          示例:365
  • 参数Y:    描述:年份                          示例:2020
  • 参数y:    描述:年份                          示例:20
  • 参数W:    描述:周数                         示例:51
  • 参数w:    描述:星期                          示例:4
  • 参数T:    描述:时区                          示例:CST
  • 参数S:    描述:序列型数字的后缀      示例:st/th
  • 参数r:    描述:完整的日期时间        示例:Thu,16 Jan 2020 20:30:10 +0800
  • 参数O:    描述:时区                       示例:+0800
  • 参数n:    描述:月份                        示例:1
  • 参数M:    描述:月份                      示例:Jan
  • 参数m:    描述:月份                      示例:01
  • 参数l:    描述:星期                        示例:星期四
  • 参数A:    描述:上下午                   示例:AM/PM
  • 参数a:    描述:上下午                   示例:am/pm
  • 参数H:    描述:分钟                     示例:06
  • 参数h:    描述:分钟                     示例:6
  • 参数G:    描述:小时                    示例:06
  • 参数g:    描述:小时                    示例:6
  • 参数F:    描述:月份                    示例:一月
  • 参数D:    描述:星期                   示例:四
  • 参数j:    描述:日期                    示例:6
  • 参数d:    描述:日期                   示例:06

为了大家对以上参数的用法有个比较直观深入的了解,下面提供几个实例供大家参考:

1.怎样用Wordpress输出时间:年 月 日,

如:2020年1月16日:

//怎样用wordpress输出时间:年 月 日 
<?php the_time('Y年n月j日'); ?>

2.怎样用Wordpress输出时分秒时间:,

如:12:00:00:

//怎样用wordpress输出时分秒时间:
<?php the_time('G:i:s');?>

3.怎样用Wordpress输出星期几:

如:2020年1月16日星期四:

//怎样用wordpress输出星期几:
<?php the_time('Y年n月j日l') ;?>

注意

在最后还要强调一个问题,就是当你使用中文版的wordpress时,它会很智能的将你的某些时间参数转换成中文的输出方式,比如月份。有时我们可能并不需要这样智能的转换,而只是希望利用阿拉伯数字进行输出,那么应该怎么去解决这个问题呢?
其实解决问题的办法也不难,只是要求我们将时间函数的参数进行一些修改即可:
比如说我们原来输出月份的代码如下:

//这个输出结果时会自动将月份转换成中文
<?php the_time('M');?>

我们只需要将以上代码替换成下面这样就行了:

//修改后的代码
<?php echo date('M',get_the_time('U'));?>

WordPress时间函数 Data()

上面介绍了wordpress data()函数的使用方法,data函数的参数和the time相同,在此不一一赘述。需要提醒的还是:如果你要在网页中直接输出时间请用the_time(),如果需要调用时间,比如把它传给一个变量,写进数据库等等,就要使用data()了。

一句话:

<?php the_time() ?>等价于<?php echo data() ?>

鲍成龙

wordpress 移除用户角色添加新角色并赋予角色能力/权限,一看这个标题就知道是关于用户的,也就是说用户角色跟那些开放了用户注册登陆的站有关。WordPress 提供的 5 类用户角色与权限,除了管理员好使之外,其它角色很多时候都不好用。这时候我们就需要添加我们自己的用户角色,比如普通用户、VIP 用户等等。并且给它们赋予不同的权限,方便我们实现我们需要的业务逻辑。WordPress 也知道自己的角色与权限不够大家用,于是提供了相应的函数供我们 DIY。

移除角色

WordPress 自带的订阅者对我们几乎没有作用,因此可以考虑移除它,你也可以不移除。

remove_role($data)

参数是角色名字,WordPress 的角色名如下:

订阅者:subscriber

投稿者:contributor

作者:author

编辑:editor

管理员:administrator

比如移除订阅者:

remove_role( 'subscriber' );//移除订阅者

将代码放在主题的 functions.php 中即可。

 

添加角色

//添加普通用户角色
add_role('pt_user', '普通用户', array(
'read' => false, //读权限
'edit_posts' => false,//编辑权限
'delete_posts' => false, //删除权限));

 

这样就可以添加一个名为普通用户的角色,为了与上面 WordPress 自带的角色名形成对比,特意写成下面的形式:

普通用户:pt_user

同样将代码放在主题的 functions.php 中即可。

比如不让普通用户拥有查看部分内容,就不给普通用户赋予读权限,在使用时,只需判断用户是否具有读权限即可,如下

if ( is_user_logged_in()  && current_user_can( 'read' ) ) {
//有权限
}else{
//没有权限}


修改添加角色后,我们在后台可以看到目前拥有的角色,如下:

WordPress移除用户角色添加新角色并赋予角色能力/权限

另外,在移除了订阅者后,新用户注册将默认无身份,我们可以在给用户注册时指定用户角色来赋予新用户默认角色。具体请查看用户注册函数 WordPress 函数 wp_insert_user 注册新用户中的参数介绍。

 

修改角色

$user = new WP_User( $ID );
$user->set_role( 'pt_user' );


直接设置角色,将覆盖已拥有角色,WordPress 允许拥有多个角色!

鲍成龙

本文是“WordPress 路径相关函数总结”系列文章的最后一篇文章,在 讲完站点路径相关函数主题路径相关函数插件路径相关函数后,最后要讲讲的是 WordPress 中还有一组用define定义的常量代表路径。

WP_CONTENT_DIR

wp-content目录的服务器绝对路径,例如

/home/user/public_html/wp-content

 

WP_CONTENT_URL

wp-content目录的URI地址,例如

http://xxx.com/wp-content

WP_PLUGIN_DIR

插件目录的服务器绝对路径,例如

/home/user/public_html/wp-content/plugins

WP_PLUGIN_URL

插件目录的URI地址,例如

http://xxx.com/wp-content/plugins

TEMPLATEPATH

当前启用主题目录的服务器绝对路径,相当于get_template_directory()例如

/home/user/public_html/wp-content/themes/twentyeleven

STYLESHEETPATH

当前启用主题目录的服务器绝对路径,相当于get_stylesheet_directory(),与TEMPLATEPATH的区别在于如果使用child theme,该常量指向child theme目录。

 

鲍成龙

这一篇则是针对WordPress 插件的函数,对于开发WordPress 插件的开发者很有帮助.

 

plugins_url()

获取当前插件的目录的URI,例如一个插件位于/wp-content/plugins/myplugin下,该目录下放有插件的主文件名为myplugin.php,在myplugin.php中执行下面的代码,结果如下

echo plugins_url();
//输出:http://xxx.com/wp-content/plugins
echo plugins_url('',__FILE__);
//输出:http://xxx.com/wp-content/plugins/myplugin
echo plugins_url('js/myscript.js',__FILE__);
//输出:http://xxx.com/wp-content/plugins/myplugin/js/myscript.js

 

plugin_dir_url()

返回当前插件的目录URI,例如

echo plugin_dir_url( __FILE__ );
//输出:http://xxx.com/wp-content/plugins/myplugin/

注意结尾有反斜杠。

plugin_dir_path()

返回当前插件目录的服务器绝对路径,例如

echo plugin_dir_path( __FILE__ );
//输出:/home/user/public_html/wp-content/plugins/myplugin/

可以用来引用文件,例如

<?php
define( 'MYPLUGINNAME_PATH', plugin_dir_path(__FILE__) );
require MYPLUGINNAME_PATH . 'includes/class-metabox.php';
require MYPLUGINNAME_PATH . 'includes/class-widget.php';
?>

plugin_basename()

返回调用该函数的插件文件名称(包含插件路径)

例如在插件myplugin下的myplugin.php文件中调用该函数,结果如下

echo plugin_basename(__FILE__);
//输出:myplugin/myplugin.php

如果在myplugin/include/test.php文件中调用(test.php通过include引用到myplugin.php中),结果如下

echo plugin_basename(__FILE__);
//输出:myplugin/include/test.php

 

鲍成龙

这一篇则是针对WordPress 主题的函数,对于开发WordPress 主题的开发者很有帮助;相关函数也可以在WordPress 官方文档找到相应的更详细的用法。

还是以本站 http://xxx.com 为例子:

get_theme_root_uri()

获取存放主题的目录URI

echo get_theme_root_uri();
//输出:http://xxx.com/wp-content/themes

get_theme_root()

获取存放主题的目录的服务器绝对路径

echo get_theme_root();
//输出:<tt>/home/user/public_html/wp-content/themes</tt>

get_theme_roots()

获取主题目录的目录名称,如果你的主题目录是/wp-content/themes,则

echo get_theme_roots();
//输出:/themes

get_stylesheet_directory()

获取当前启用的主题目录的服务器绝对路径,例如

/home/user/public_html/wp-content/themes/twentyeleven

可以用来include文件,例如

<?php include( get_stylesheet_directory() . '/includes/myfile.php'); ?>

get_stylesheet_directory_uri()

获取当前启用的主题目录的URI,例如

echo get_stylesheet_directory_uri();
//输出:http:/xxx.com/wp-content/themes/twentyeleven

可以使用在需要主题目录URI的场合,例如图片

<img src="<?php echo get_stylesheet_directory_uri() ?>/images/1.png" alt="" title="" width="" height="" />

get_template_directory_uri()

如果当前启用的主题是一个child theme,该函数返回parent theme的主题目录URI,用法与get_stylesheet_directory_uri()类似。

get_template_directory()

如果当前启用的主题是一个child theme,该函数返回parent theme的主题目录的服务器绝对路径,用法与get_stylesheet_directory()类似。

get_template()

获取当前启用主题的主题目录名称,例如现在启用的主题为twentyeleven,则

echo get_stylesheet();
//输出:twentyeleven

 

get_stylesheet()

获取当前启用主题的主题目录名称,与get_template()的区别是,如果用了child theme,则返回child theme的目录名称。

 

鲍成龙

在开发WordPress 相关产品(主题、插件)的时候,常常需要通过某些函数获取路径,包括URL路径和服务器路径。比如说在主题或插件中引用js或css文件需要URL地址,而include一些文件时则需要服务器路径。在WordPress中,不能认定wp-content目录一定位于/wp-content下,也不能认为admin的地址一定是/wp-admin,为了避免错误,了解WordPress中与获取路径相关的函数很重要。

站点路径相关函数,以下以本站 http://xxx.com 为例子:

home_url()

返回站点路径,相当于后台设置->常规中的"站点地址(URL)"。

$url = home_url();
echo $url;
//输出: http://xxx.com
$url = home_url('/images/');
echo $url;
//输出:http://xxx.com/images/

site_url()

如果WordPress安装在域名根目录下,则该函数与home_url()相同。

如果WordPress安装在子目录下,例如http://xxx.com/wordpress,则site_url()返回WordPress实际安装地址,相当于后台->设置->常规中的“WordPress 地址(URL)”。

$url = site_url();
echo $url;
//假设WordPress安装在http://xxx.com/wordpress下
//输出:http://xxx.com/wordpress

admin_url()

返回后台地址,传递参数后也可返回后台menu的地址

$url = admin_url();
echo $url;
//输出:http://xxx.com/wp-admin/

content_url()

返回实际的wp-content目录,如果是默认安装,且装在根目录下,则如下所示

$url = content_url();
echo $url;
//输出:http://xxx.com/wp-content

如果在wp-config.php中改变了wp-content目录的位置,则该函数会返回正确地址,例如wp-config.php中如下定义

define('WP_CONTENT_DIR', '/home/user/public_html/cdn');
define('WP_CONTENT_URL', 'http://sola-cdn.me');

则content_url()的返回值为

http://sola-cdn.me

includes_url()

返回当前WordPress站点存放核心文件的目录wp-includes的地址,可以带一个$path作为参数。

$url = includes_url( '/js/');
echo $url;
//输出:http://xxx.com/wp-includes/js/

wp_upload_dir()

返回WordPress上传目录的地址,是一个数组,包含一系列与上传地址相关的信息。

<?php $upload_dir = wp_upload_dir(); ?>

提供如下信息给你

* 'path' - 上传目录的服务器绝对路径,通常以反斜杠(/)开头
* 'url' - 上传目录的完整URL
* 'subdir' - 子目录名称,通常是以年/月形式组织的目录地址,例如/2012/07
* 'basedir' - 上传目录的服务器绝对路径,不包含子目录
* 'baseurl' - 上传目录的完整URL,不包含子目录
* 'error' - 报错信息.

例如

$upload_dir = wp_upload_dir();
echo $upload_dir['baseurl'];
//输出:http://xxx.com/wp-content/uploads