Как создать новый тип постов (post type) в WordPress.


Последние версии WordPress позволяют создавать пользовательские типы постов (post type). Это может пригодиться, если вы хотите выделить в админке определенный тип постов отдельным разделов, также как, например, по умолчанию отображаются «Записи» (Posts).

Допустим, мы решили создать раздел о кошках. Нам нужно сделать так, чтобы в админке слева для удобства отображалось Cat с возможностью быстро перейти к списку всех записей в данном разделе или быстро добавить новый контент. Все, что нам нужно сделать, это добавить в файл function.php вашей активной темы небольшой код.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// Add new post type for Cat upon WordPress initialization
add_action('init', 'cat_init');
 
function cat_init()
{
    //Labels for custom post type.
    $view_labels = array(
 
// general name for the post type, usually plural.
        'name' => _x('Cats', 'post type general name'),
 
//name for one object of this post type. Defaults to value of name 
        'singular_name' => _x('Cat', 'post type singular name'),
 
//the all items text used in the menu. Default is the Name label
        'all_items' => __('All Cats'),
 
// the add new text. The default is Add New for both hierarchical and non-hierarchical types. When internationalizing this string, please use a gettext context matching your post type. Example: _x('Add New', 'product');
        'add_new' => _x('Add new cat', 'cat'),
 
// the add new item text. Default is Add New Post/Add New Page
        'add_new_item' => __('Add new cat'),
 
// the edit item text. Default is Edit Post/Edit Page
        'edit_item' => __('Edit cat'),
 
//the new item text. Default is New Post/New Page
        'new_item' => __('New cat'),
 
//the view item text. Default is View Post/View Page
        'view_item' => __('View cat'),
 
//the search items text. Default is Search Posts/Search Pages
        'search_items' => __('Search in cat'),
 
//the not found text. Default is No posts found/No pages found
        'not_found' =>  __('No cat found'),
 
//the not found in trash text. Default is No posts found in Trash/No pages found in Trash
        'not_found_in_trash' => __('No cat found in trash'),
 
//the parent text. This string isn't used on non-hierarchical types. In hierarchical ones the default is Parent Page
        'parent_item_colon' => ''
    );
 
//Arguments
    $args = array(
 
//A plural descriptive name for the post type marked for translation.
        'labels' => $view_labels,
 
//Whether a post type is intended to be used publicly either via the admin interface or by front-end users.
        'public' => true,
 
//Whether queries can be performed on the front end as part of parse_request().
        'publicly_queryable' => true,
 
//Whether to generate a default UI for managing this post type in the admin.
        'show_ui' => true,
 
//Sets the query_var key for this post type.
        'query_var' => true,
 
//Triggers the handling of rewrites for this post type. To prevent rewrites, set to false.
        'rewrite' => true,
 
//The string to use to build the read, edit, and delete capabilities. May be passed as an array to allow for alternative plurals when using this argument as a base to construct the capabilities
        'capability_type' => 'post',
 
//Whether the post type is hierarchical (e.g. page). Allows Parent to be specified. The 'supports' parameter should contain 'page-attributes' to show the parent select box on the editor page.
        'hierarchical' => false,
 
//menu_position
        'menu_position' => 5,
 
//An alias for calling add_post_type_support() directly. As of 3.5, boolean false can be passed as value instead of an array to prevent default (title and editor) behavior.
        'supports' => array('title','editor','author','thumbnail','excerpt','comments','custom-fields'),
 
//Enables post type archives. Will use $post_type as archive slug by default.
        'has_archive' => 'cat'
    );
    register_post_type('cat',$args);
}

Комментарии намерено оставлены на английском, чтобы код можно было быстро вставить с минимальными корректировками (использование русского языка в комментариях не очень хорошая идея).

После того, как код вставлен в function.php в меню админки появятся ссылки для работы с новым типом постов «Cat».

post type wordpress




Другие посты

Категория: WordPress

Комментарии (2)

 

  1. Привет!
    Если еще в теме, помоги разобраться.
    Мне нужно сделать произвольные типы постов, но чтобы они отображались с вложенностью категорий.
    т.е. пост с сямской кошкой (ну чтобы не отходить от примера) был по пути animals/cats/siam.html или catalog/animals/cats/siam.html
    Уже долгое время бьюсь с этой задачей :(
    Спасибо!

  2. Владимир:

    Всё получилось, спасибо! Подскажите как привязать эти посты определенной категории, чтобы создавая здесь пост только в эту категорию попадала запись.

    Просто у меня посты этой категории не будут выводиться на главной, а в специально отведенном месте :)

Оставить комментарий