在添加WordPress自定义文章类型(custom post type)的时候,因为参数很多,会有很长的参数数组。如官方文档中的例子:
- function codex_custom_init() {
- $labels = array(
- 'name' => 'Books',
- 'singular_name' => 'Book',
- 'add_new' => 'Add New',
- 'add_new_item' => 'Add New Book',
- 'edit_item' => 'Edit Book',
- 'new_item' => 'New Book',
- 'all_items' => 'All Books',
- 'view_item' => 'View Book',
- 'search_items' => 'Search Books',
- 'not_found' => 'No books found',
- 'not_found_in_trash' => 'No books found in Trash',
- 'parent_item_colon' => '',
- 'menu_name' => 'Books'
- );
-
- $args = array(
- 'labels' => $labels,
- 'public' => true,
- 'publicly_queryable' => true,
- 'show_ui' => true,
- 'show_in_menu' => true,
- 'query_var' => true,
- 'rewrite' => array( 'slug' => 'book' ),
- 'capability_type' => 'post',
- 'has_archive' => true,
- 'hierarchical' => false,
- 'menu_position' => null,
- 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
- );
-
- register_post_type( 'book', $args );
- }
- add_action( 'init', 'codex_custom_init' );
这样写起来并不难,但是试想一下,如果我们的项目有要注册多个自定义文章类型的时候,那代码不是变得更长?所以就考虑将它们写成函数,分别定义好了这些参数数组,这样无论注册多少个自定义文章类型,代码都非常简单。
- // register post type label args
- function tj_cutom_post_type_label_args($typeName){
- return $labels = array(
- 'name' => $typeName,
- 'singular_name' => $typeName,
- 'add_new' => 'Add New',
- 'add_new_item' => 'Add New '.$typeName,
- 'edit_item' => 'Edit '.$typeName,
- 'new_item' => 'New '.$typeName,
- 'all_items' => 'All '.$typeName,
- 'view_item' => 'View '.$typeName,
- 'search_items' => 'Search '.$typeName,
- 'not_found' => 'No '.$typeName.' found',
- 'not_found_in_trash' => 'No '.$typeName.' found in Trash',
- 'parent_item_colon' => '',
- 'menu_name' => $typeName
- );
- }
-
- // register post type args
- function tj_custom_post_type_args($typeName,$postType="post",$public=true,$queryable=true,$show_ui=true,$show_menu=true,$query_var=true,$has_archive = true, $hierarchical = false,$menu_position = null){
- return $args = array(
- 'labels' => tj_cutom_post_type_label_args($typeName),
- 'public' => $public,
- 'publicly_queryable' => $queryable,
- 'show_ui' => $show_ui,
- 'show_in_menu' => $show_menu,
- 'query_var' => $query_var,
- 'rewrite' => array( 'slug' => strtolower($typeName)),
- 'capability_type' => $postType,
- 'has_archive' => $has_archive,
- 'hierarchical' => $hierarchical,
- 'menu_position' => $menu_position,
- 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
- );
- }
然后我们就可以通过下面的样例快速添加多个自定义文章类型啦:
- function tj_custom_post_type() {
- register_post_type( 'portfolio', tj_custom_post_type_args("Portfolio"));
- register_post_type( 'testimonials', tj_custom_post_type_args("Testimonials"));
- }
- add_action( 'init', 'tj_custom_post_type' );
参考资料:http://wzbs.org/wordpress-custom-content-types-efficient-wording/
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
上面代码第4,5行typeName前面少了$
用这个方法怎么添加多个自定义文章类型的分类呢???
❓ 同样的问题。。。。站长能说明下吗
对呀,没有分类和tag标签
自定义文章类型的文章 管理里面,怎么添加 按分类目录筛选的功能呢?
这个方法方便点 但目前只增加过一个 还不需要
哎呀,我咋没早点发现这篇文章,白瞎了我这么些日子~~