信科网络 · 11 年只做 WordPress | 建站 / 主题 / 插件 / 商城 / 迁移 / 托管 | 累计服务 3000+ 企业 | 源码全交付
服务热线:13280692153 邮箱:web@wordpressx.com
工作日 08:30-18:0013280692153 免费诊断
首页/WordPress 教程/register_post_type()函数
BLOG

register_post_type()函数

分类 发布 2022-08-19

register_post_type()函数是用于自定义文章类型的函数

语法结构

register_post_type($post_type,$args)

参数

$post_type (string) (必选) 文章类型的名称(最多20个字符) Default: 空
$args (array) (可选) 一个数组参数 Default: 空

Post Type 可以自定义的功能非常多,所以这个函数里面的 $args参数会很多。所以通常会用下面这种格式来注册,也有很多是可选项:

// 注册自定义文章形式
function custom_post_type(){
    $labels = array(
        'name' => 'Post Type General Name',
        'singular_name' => 'Post Type Singular Name',
        'menu_name' => 'Post Types',
        'name_admin_bar'  => 'Post Type',
        'archives'  => 'Item Archives',
        'attributes' => 'Item Attributes',
        'parent_item_colon' => 'Parent Item:',
        'all_items' => 'All Items',
        'add_new_item' => 'Add New Item',
        'add_new' => 'Add New',
        'new_item' => 'New Item',
        'edit_item' => 'Edit Item',
        'update_item' => 'Update Item',
        'view_item' => 'View Item',
        'view_items' => 'View Items',
        'search_items' => 'Search Item',
        'not_found' => 'Not found',
        'not_found_in_trash' => 'Not found in Trash',
        'featured_image' => 'Featured Image',
        'set_featured_image' => 'Set featured image',
        'remove_featured_image' => 'Remove featured image',
        'use_featured_image' => 'Use as featured image',
        'insert_into_item' => 'Insert into item',
        'uploaded_to_this_item' => 'Uploaded to this item',
        'items_list' => 'Items list',
        'items_list_navigation' => 'Items list navigation',
        'filter_items_list' => 'Filter items list'
    );
    $args = array(
        'labels' => $labels,
        'description' => 'Post Type Description',
        'supports'  => array('title','editor','author','thumbnail','excerpt','comments'),
        'taxonomies' => array( 'category', 'post_tag' ),
        'hierarchical' => false,
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'menu_position' => 5,
        'menu_icon' => 'dashicons-cart',
        'show_in_admin_bar' => true,
        'show_in_nav_menus' => true,
        'can_export' => true,
        'has_archive' => true,
        'exclude_from_search' => false,
        'publicly_queryable' => true,
        'capability_type' => 'page',
    );
    register_post_type('post_type', $args);
}
add_action('init', 'custom_post_type');

$labels用来配置文章类型显示在后台的一些描述性文字,默认为空。(上面代码中,为了清晰所以单独拿出来创建了一个数组 $labels)

name – 文章类型的名称(英语写为复数)
singular_name – 单篇文章类型的名称(英语写为复数)
add_new – 对应“添加新的文本”
all_items – 子菜单的字符串。默认是所有帖子/所有页面。
add_new_item – “添加新帖/新页面”
edit_item – “编辑帖子/页面”
new_item – “新贴/新页”
view_item – 用于查看帖子类型归档的标签。默认是’查看帖子’/’查看页面’
search_items – 默认是搜索帖子/搜索页面
not_found – 默认是没有发现帖子/找不到页面。
not_found_in_trash – 默认是在垃圾桶中找不到帖子/在垃圾桶中找不到页面。
parent_item_colon – 此字符串不用于非分层类型。在层次结构中,默认为“父页面:”。
menu_name’ – 菜单名称,默认与`name`相同。

$args的详细参数

description – 一些简短的介绍文字
public- 用于定义publicly_queryable,exclude_from_search,show_ui,show_in_nav_menus可见的方式, 默认是false,’true 的话即为show_ui = true,public_queryable = true,exclude_from_search = false,show_in_nav_menus = true

  1. publicly_queryable – 可以从前台获取的变量(从url中,比如url重写),默认值:public参数的值
  2. exclude_from_search – 是否能够被搜索到。默认值:与public参数相反的值
  3. show_ui – 是否生成一个默认的管理页面,也就是是否在后台有管理页面。默认值:public参数的值
  4. show_in_nav_menus -是否可以在导航菜单中选择post_type。默认值:public参数的值
  5. show_in_menu- 是否在后台菜单项中显示,如果为ture,那么show_ui的值也必须设置为true,将会有一个顶级菜单项。 默认值:null

menu_position – 在后台菜单中的位置

  1. 5 – below Posts
  2. 10 – below Media
  3. 15 – below Links
  4. 20 – below Pages
  5. 25 – below comments
  6. 60 – below first separator
  7. 65 – below Plugins
  8. 70 – below Users
  9. 75 – below Tools
  10. 80 – below Settings
  11. 100 – below second separator

menu_icon-用于此菜单的图标的URL或iconfont中图标的名称  默认值:null – 默认为帖子图标
capability_type – 查看、编辑、删除的能力类型(capability),默认为post
capabilities – 这个帖子类型的功能的数组 (一般人用不到)。默认值:capability_type用于构造
map_meta_cap – 是否使用内部默认元功能处理,只有设置了capabilities才用的上。默认值:false
hierarchical – 文章是否有层级关系,也就是是否允许有父级文章。
supports – 对文章类型的一些功能支持

register_post_type()函数
  1. ‘title’ 标题
  2. ‘editor’ (content) 编辑
  3. ‘author’ 作者
  4. ‘thumbnail’ 特色图
  5. ‘excerpt’ 摘抄
  6. ‘trackbacks’ 引用通过
  7. ‘custom-fields’ 自定义字段
  8. ‘comments’ 评论
  9. ‘revisions’ 修订版
  10. ‘page-attributes’ 页面属性,类似page,选择页面模板的那个

register_meta_box_cb – 提供在设置编辑表单的元框时调用的回调函数。回调函数使用一个参数$ post,其中包含当前编辑的帖子的WP_Post对象。在回调中执行remove_meta_box()和add_meta_box()调用。默认值:无
taxonomies – 添加已经注册了的分类法
has_archive- 文章是否有归档,就是一个所有文章归档页面
rewrite – 触发此帖子类型的重写操作。为了防止重写,设置为false。默认值:true,并使用$ post_type作为slug
* $ args数组

  1. * ‘slug’=> string自定义永久链接结构块。默认为$ post_type值。应该是可翻译的
  2. * ‘with_front’=> bool应该使用前置基座添加永久链接结构。(例如:如果你的永久链接结构是/ blog /,那么你的链接将是:false – > / news /,true – > / blog / news /)。默认为true
  3. * ‘feed’=> bool应该为此帖子类型构建一个feed permalink结构。默认为has_archive值。
  4. * ‘pages’=> bool应该是永久链接结构提供分页。默认为true

query_var – 设置此帖子类型的query_var键。 默认值:true – 设置为$ post_type false则表示禁用
can_export – 可以导出此post_type。默认值:true

实例

<?php
add_action('init', 'my_custom_product');
function my_custom_product()
{
    $labels = array(
        'name' => 'Products Name',
        'singular_name' => 'Product Singular Name',
        'add_new' => '添加产品',
        'add_new_item' => '添加产品',
        'edit_item' => '编辑产品',
        'new_item' => '新产品',
        'all_items' => __('所有产品'),
        'view_item' => '查看产品',
        'search_items' => '搜索产品',
        'not_found' =>  '没有找到有关产品',
        'not_found_in_trash' => '回收站里面没有相关产品',
        'parent_item_colon' => '',
        'menu_name' => '产品'

    );
    $args = array(
        'labels' => $labels,
        'description'=> '自定义的产品类型',
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'rewrite' => true,
        'capability_type' => 'post',
        'has_archive' => true,
        'hierarchical' => false,
        'menu_position' => 5,
        'menu_icon' => 'dashicons-cart',
        'taxonomies'=> array('post_tag'),
        'supports' => array('title','editor','author','thumbnail','excerpt','comments')
    );
    register_post_type('product',$args);

    $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(
            'hierarchical' => true,
            'labels' => $labels,
            'show_ui' => true,
            'query_var' => true,
        )
    );
}
?>

这里为了直观方便,我直接使用了中文,更好的应该是使用英文然后通过本地化函数来翻译成中文。通过以上代码我们就可以创建一个名为产品的分类

这种方法前端调用的话只需要创建:archive-product.php 模板即可,这个模板用于分类列表页的模板调用,product是我们的post type的名字。创建 single-product.php 模板即可实现分类的文章的详情页的调用。

‘taxonomies’=> array(‘post_tag’)这段代码意思是给自定义post type添加标签页面,如果需要使用WordPress自带的分类标签方法,可以写为注意,’taxonomies’=> array(‘post_tag’, ‘category’)。

在wordpress中也有一种独立的分类法,与文章类型一样,可以使用register_taxonomy()函数来注册分类方法。

INDUSTRIAL BELT

扎根中国制造产业带
懂工厂,才懂出海

从胶东半岛到珠三角,从长三角到中原腹地,每一片产业集群都有自己的出口节奏与买家画像。信科网络长期扎根产业一线,把工厂的产品语言翻译成海外采购商听得懂的搜索语言,让每一分投入都对着真实的询盘去。

jizhou

冀州外贸网站建设

冀州市隶属河北省衡水市,地处华北平原腹地,北距首都300公里,西距省会石家庄110公里,辖区总面积918平方公里,东与枣强县(衡水)为邻,南与南宫市、新河县(邢台)接壤,西与宁晋县(邢台)…

yubei

渝北外贸网站建设

重庆市渝北区位于重庆市区北部,是1994年12月17日经国务院批准,在撤销原江北县建制基础上设立的新区。渝北区是重庆市的行政区,原为江北县,南端为主城区一部分的龙溪镇,北端与四川省接壤,…

nanchuan

南川外贸建站

南川地处四川盆地东南边缘与云贵高原过渡地带,位于重庆市南部,东南与贵州省道真、正安、桐梓县接壤,东北与武隆县为邻,北接涪陵区,西连巴南区、綦江县、万盛区。总面积2602平方千米。总人…

guyuan

固原外贸建站

固原地区位于宁夏回族自治区南部,东西南三面与甘肃毗邻,北部与本区中卫、同心两县接壤,总面积16783平方公里,辖固原、海原、西吉、隆德、彭阳、泾源县,总人口186.85万人,其中回族占47.6%,…

xiushan

秀山WordPress建站

秀山土家族苗族自治县,位于重庆市东南部,武陵山脉中段,四川盆地东南缘的外侧,为川东南重门户。与湖南省、湖北省、贵州省毗邻,326国道和319国道贯穿全县。距长沙604公里、武汉656里、贵阳5…

rongcheng

容城WordPress建站

河北省容城县,历史悠久,距今已有2000年的历史,全县总面积314平方公里,总人口25万人。地理位置得天独厚。位于河北省中部,京、津、保腹地,距首都北京和天津直辖市均为120公里,两个小时的…

jingxian

景县Shopify建站

景县位于河北省东南部,大运河西岸,全县辖9镇7乡,849个行政村,总面积1183平方公里。全县呈簸箕形,由西南向东北逐渐倾斜坦,最高点海拔25米,最低点14.1米。属暖温带半湿润大陆性气候,四季…

jinfeng

金凤Shopify建站

金凤区于2002年11月1日成立,是宁夏回族自治区首府银川市的市辖区之一,位于市区中部,东到唐徕渠,西到包兰铁路,南接永宁县,北临贺兰县,辖良田、丰登2个镇,上海西路、北京中路、长城中路…

wushan

巫山外贸推广

巫山位于重庆市东北部,三峡库区腹心,素有“渝东门户”之称,地跨长江巫峡两岸。东邻湖北省巴东县,西接奉节县,南与湖北省建始县毗连,北与巫溪县及神农架林区接壤。县城位于大宁河与长江交汇…

xianxian

献县外贸推广

献县历史悠久,夏商时期属冀州,春秋时属燕国,战国时属燕、赵、秦。早在春秋战国时期。境内就形成了具有一定影响力的城市——乐成。汉高祖六年(公元前201年)置河间郡,汉文帝二年…

hengshui

衡水Google SEO

衡水市位于河北省东南部,东与沧州市和山东省德州市毗邻,西与石家庄市接壤,南与邢台市相连,北与保定市交界;南北长125.5公里,东西宽98.13公里,全市辖8县2市1区,总面积5815.4平方公里。衡…

kaizhou

开州Google SEO

开州区隶属于重庆市,位于重庆市东北部,三峡库区小江支流回水末端,介于北纬30°49′30″-31°41′30″、东经107°55′48″-108°54′之间,西邻四川省开江县,北依大巴山接城口县和四川省宣汉县,东毗云…

beibei

北碚GEO优化

北碚区位于重庆市区西北郊的缙云山下,嘉陵江畔,幅员面积753平方公里,人口63万,是重庆的风景旅游区和智力型清洁工业基地。本世纪20年代末,由爱国实业家卢作孚先生开拓,抗战时期为陪都重庆…

xingqing

兴庆GEO优化

金凤区于2002年11月1日成立,是宁夏回族自治区首府银川市的市辖区之一,位于市区中部,东到唐徕渠,西到包兰铁路,南接永宁县,北临贺兰县,辖良田、丰登2个镇,上海西路、北京中路、长城中路…

beidaihe

北戴河谷歌SEM

北戴河海滨地处河北省秦皇岛市中心的西部。是秦皇岛的城市区之一!受海洋气候的影响,夏无酷暑,冬无严寒,常年保持一级大气质量,没有污染,没有噪音,城市森林覆盖率54%,人均绿地630平方米…

lulong

卢龙谷歌SEM

卢龙县地处河北省东北部、隶属于秦皇岛市,总面积961平方公里,全县辖12个乡镇、548个行政村,总人口41.5万人,其中农业人口38万人。卢龙,历史悠久,人杰地灵。1988年,卢龙县被确定为全国对…

shizhu

石柱Facebook广告

石柱土家族自治县简称石柱县,位于重庆市东部、长江南岸、山峡库区腹心,是集少数民族自治县、三峡库区淹没县、国家扶贫工作重点县于一体的特殊县份。幅员面积3012平方公里,辖32个乡镇,总人…

huinong

惠农Facebook广告

塞北明珠——惠农区,地处宁夏回族自治区最北端,东临滔滔黄河,西依巍巍贺兰山,北与内蒙乌海接壤,总面积1088平方公里,人口20.9万。惠农区是2004年2月经国务院批准,撤消原惠农县和石嘴山区而…

fengdou

丰都Yandex推广

丰都县位于重庆市版图中心,东经107°28′03″-108°12′37″,北纬29°33′18″-30°16′25″之间,呈西北—东南走向分布,南北长87km,东西宽54km,幅员面积2901km2。长江横穿县境47km,水上距离重庆主…

xinhua

新华Yandex推广

新华区隶属于河北省沧州市,地处沧州市区东半部,与运河区以清池大道为界,行政区域总面积88.5平方千米。新华区属暖温带半湿润大陆性季风气候,四季分明,日照充足。截至2014年,新华区下辖5个…

yuanzhou

原州TikTok推广

原州区,隶属于宁夏回族自治区固原市,地处宁夏南部,六盘山东北麓,黄土高原中西部,东邻彭阳县,南接泾源县,西连西吉县,北靠海原县、同心县,东北、西南分别与甘肃环县、隆德县毗壤,是固…

为什么一定要选懂产业带的出海服务商?建材丝网的欧洲建筑商看资质与交期,工业橡塑的中东工程商问耐温与工况,毛皮服饰的俄罗斯分销商算的是季节与毛利。买家不同,决策逻辑就不同;信科网络把这些差异拆进网站结构、关键词地图和投放策略里,用他们习惯的方式出现在他们搜索的地方。