在WordPress插件开发中,如何使用register_post_type()创建自定义文章类型?

2024-10-15 84 0

在WordPress中创建自定义文章类型,您需要使用register_post_type()函数。以下是一个基本的示例,说明如何使用此函数来创建一个名为“Book”的自定义文章类型。

首先,您需要在您的插件文件或者主题的functions.php文件中添加以下代码:

function create_book_post_type() {
    // 设置标签(复数名称)
    $labels = array(
        'name'                  => _x( 'Books', 'Post Type General Name', 'textdomain' ),
        'singular_name'         => _x( 'Book', 'Post Type Singular Name', 'textdomain' ),
        'menu_name'             => __( 'Books', 'textdomain' ),
        'name_admin_bar'        => __( 'Book', 'textdomain' ),
        'archives'              => __( 'Book Archives', 'textdomain' ),
        'attributes'            => __( 'Book Attributes', 'textdomain' ),
        'parent_item_colon'     => __( 'Parent Book:', 'textdomain' ),
        'all_items'             => __( 'All Books', 'textdomain' ),
        'add_new_item'          => __( 'Add New Book', 'textdomain' ),
        'add_new'               => __( 'Add New', 'textdomain' ),
        'new_item'              => __( 'New Book', 'textdomain' ),
        'edit_item'             => __( 'Edit Book', 'textdomain' ),
        'update_item'           => __( 'Update Book', 'textdomain' ),
        'view_item'             => __( 'View Book', 'textdomain' ),
        'view_items'            => __( 'View Books', 'textdomain' ),
        'search_items'          => __( 'Search Book', 'textdomain' ),
        'not_found'             => __( 'Not found', 'textdomain' ),
        'not_found_in_trash'    => __( 'Not found in Trash', 'textdomain' ),
        'featured_image'        => __( 'Featured Image', 'textdomain' ),
        'set_featured_image'    => __( 'Set featured image', 'textdomain' ),
        'remove_featured_image' => __( 'Remove featured image', 'textdomain' ),
        'use_featured_image'    => __( 'Use as featured image', 'textdomain' ),
        'insert_into_item'      => __( 'Insert into book', 'textdomain' ),
        'uploaded_to_this_item' => __( 'Uploaded to this book', 'textdomain' ),
        'items_list'            => __( 'Books list', 'textdomain' ),
        'items_list_navigation' => __( 'Books list navigation', 'textdomain' ),
        'filter_items_list'     => __( 'Filter books list', 'textdomain' ),
    );

    // 设置参数
    $args = array(
        'label'                 => __( 'Book', 'textdomain' ),
        'description'           => __( 'Book custom post type', 'textdomain' ),
        'labels'                => $labels,
        'supports'              => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields' ),
        'taxonomies'            => array( 'category', 'post_tag' ),
        'hierarchical'          => false,
        'public'                => true,
        'show_ui'               => true,
        'show_in_menu'          => true,
        'menu_position'         => 5,
        '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'       => 'post',
    );

    // 注册文章类型
    register_post_type( 'book', $args );
}

// 在init钩子中添加自定义文章类型
add_action( 'init', 'create_book_post_type', 0 );

在这个例子中,我们定义了一个名为“Book”的自定义文章类型,并为其设置了标签和参数。以下是参数中的一些关键点:

  • supports:定义了文章类型支持的功能,如标题、编辑器、缩略图等。
  • taxonomies:定义了可以与文章类型关联的分类法,这里我们使用了默认的分类和标签。
  • hierarchical:定义了文章类型是否可以有父子关系,类似于页面。
  • public:定义了文章类型是否可以被公开访问。
  • show_ui:定义了是否在管理界面显示文章类型。
  • menu_position:定义了文章类型在管理菜单中的位置。

请将上述代码添加到您的插件或主题中,并在WordPress后台查看新的“Books”菜单项。您现在可以创建和管理“Book”类型的文章了。

相关文章

在WordPress主题中,如何实现响应式布局?
如何使用WordPress的nonce字段来增强表单安全性?
如何使用WordPress REST API 创建和读取自定义端点?
在WordPress主题开发中,如何使用wp_nav_menu()函数来自定义菜单?
如何使用the_post()函数在WordPress主题中循环显示文章?
在WordPress插件开发中,如何创建自定义数据库表?