Wordpress 自定义内容类型、分类、标签

WordPress 默认提供了五种文章类型:文章(Post)、页面(Page)、附件(Attachment)、修订版本(Revision)和菜单(Menu)。对于大多数博客或简单内容发布平台而言,这些文章类型已经足够使用。但是,如果你想使你的网站更加丰富多样,你需要自定义内容类型。例如,如果你想创建一个网址列表,可以定义一个名为“Sites”的自定义类型。

要注册一个新的新类型,可以使用register_post_type()函数。

如果你想在主题中添加,那么下面代码可以放在functions.php 中,如果想在插件中添加,放在插件的入口文件中即可。

以下是一个定义sites类型的示例代码:

add_action( 'init', 'post_type_sites' );
function post_type_sites() {
    $labels = array(
        'name'                  => _x('网址','taxonomy general name','textdomain'),
        'singular_name'         => _x('网址','post type singular name','textdomain'),
        'menu_name'             => __('网址','textdomain'),
        'name_admin_bar'        => __('网址','textdomain'),
        'add_new'               => __('添加网址','textdomain'),
        'add_new_item'          => __('添加新网址','textdomain'),
        'new_item'              => __('新网址','textdomain'),
        'edit_item'             => __('编辑网址','textdomain'),
        'view_item'             => __('查看网址','textdomain'),
        'all_items'             => __('所有网址','textdomain'),
        'search_items'          => __('搜索网址','textdomain'),
        'parent_item_colon'     => __('Parent 网址:','textdomain'),
        'not_found'             => __('你还没有发布网址。','textdomain'),
        'not_found_in_trash'    => __('回收站中没有网址。','textdomain'),
    );

    $args = array(
        'labels'                => $labels,
        'public'                => true,
        'publicly_queryable'    => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'query_var'             => true,
        'rewrite'               => array( 'slug' => 'sites' ),
        'capability_type'       => 'post',
        'menu_icon'             => 'dashicons-admin-site',
        'has_archive'           => false,
        'hierarchical'          => false,
        'show_in_rest'          => true,
        'menu_position'         => 10,
        'supports'              => array( 'title',  'author', 'editor', 'comments', 'custom-fields' )//'editor','excerpt',
        
    ); 
    register_post_type( 'sites', $args );
}

接下来再给sites自定义一个分类和标签,避免和文章共用。
以下是自定义网址分类的代码 :

// 网址分类
add_action( 'init', 'create_sites_taxonomies', 0 );
function create_sites_taxonomies() {
    $labels = array(
        'name'                  => _x('网址分类目录', 'taxonomy general name','textdomain'),
        'singular_name'         => _x('网址分类', 'taxonomy singular name','textdomain'),
        'search_items'          => __('搜索网址目录','textdomain'),
        'all_items'             => __('所有网址目录','textdomain'),
        'parent_item'           => __('父级分类目录','textdomain'),
        'parent_item_colon'     => __('父级分类目录:','textdomain'),
        'edit_item'             => __('编辑网址目录','textdomain'),
        'update_item'           => __('更新网址目录','textdomain'),
        'add_new_item'          => __('添加新网址目录','textdomain'),
        'new_item_name'         => 'New Genre Name',
        'menu_name'             => __('网址分类','textdomain'),
    );

    $args = array(
        'hierarchical'          => true,
        'labels'                => $labels,
        'show_ui'               => true,
        'show_admin_column'     => true,
        'query_var'             => true,
        'show_in_rest'          => true,
        'rewrite'               => array( 'slug' => "sitecategory" ),
    );

    register_taxonomy( 'sitecategory', array( 'sites' ), $args );
}

以下是网址标签的代码:

add_action( 'init', 'create_sites_tag_taxonomies', 0 );
function create_sites_tag_taxonomies() {
   $labels = array(
       'name'                  => _x('网址标签', 'taxonomy general name','textdomain'),
       'singular_name'         => _x('网址标签', 'taxonomy singular name','textdomain'),
       'search_items'          => __('搜索网址标签','textdomain'),
       'all_items'             => __('所有网址标签','textdomain'),
       'parent_item'           => __('父级分类目录','textdomain'),
       'parent_item_colon'     => __('父级分类目录:','textdomain'),
       'edit_item'             => __('编辑网址标签','textdomain'),
       'update_item'           => __('更新网址标签','textdomain'),
       'add_new_item'          => __('添加新网址标签','textdomain'),
       'new_item_name'         => 'New Genre Name',
       'menu_name'             => __('网址标签','textdomain'),
   );

   $args = array(
       'hierarchical'          => false,
       'labels'                => $labels,
       'show_ui'               => true,
       'show_admin_column'     => true,
       'query_var'             => true,
       'show_in_rest'          => true,
       'rewrite'               => array( 'slug' => 'sitetag', 'with_front' => false ),
   );

   register_taxonomy( 'sitetag', array( 'sites' ), $args );
}

定义完之后,可以在 Wordpress 后台看到网址菜单,可以添加新的网址,新的网址分类,网址标签。


已发布

分类

作者:

标签

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注