在添加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标签
自定义文章类型的文章 管理里面,怎么添加 按分类目录筛选的功能呢?
这个方法方便点 但目前只增加过一个 还不需要
哎呀,我咋没早点发现这篇文章,白瞎了我这么些日子~~