Как создавать коллекции, которые редактируются администратором?

Я не уверен, что называется этой функцией, но я видел примеры этого раньше. Допустим, на моем сайте мне нужны дополнительные коллекции вещей (помимо сообщений в блогах), которые имеют свои собственные разделы в области администратора.

Например, у меня есть:

  • список событий
  • список продуктов
  • список отзывов

… и каждый из них нуждается в собственной странице, чтобы перечислить их.

Как это работает в WordPress и как я могу создать свою собственную?

Solutions Collecting From Web of "Как создавать коллекции, которые редактируются администратором?"

Я верю, что вы называете «Post Types» . По умолчанию WordPress имеет полные типы сообщений, с которыми вы уже знакомы: post (новости / блог), page (страницы), attachment (мультимедиа), revision (Page / Post Revisions). Вы можете прочитать полный список встроенных типов сообщений в типах Codex – Post .

Если вы хотите зарегистрировать новый тип пользовательских сообщений (CPT), вы можете легко справиться с некоторыми знаниями PHP. Давайте рассмотрим и создадим собственный тип сообщений под названием «Продукты».

Шаг первый – подключитесь к FTP – вы не хотите делать это, используя Appearance -> Editor .

Шаг второй. Найдите свою тему, если вы используете дочернюю тему, открываете ее и находите файл functions.php . Откройте файл в Notepad ++ или ваш редактор.

Шаг третий – зарегистрируйте свой тип сообщения

К началу вашего файла functions.php мы собираемся подключиться к WordPress init и использовать встроенную функцию WordPress, которую ловко называют: register_post_type . Я настоятельно рекомендую вам прочитать эти ссылки на код, поскольку я не буду объяснять каждую точку, а вместо этого даю краткое описание.

 /** Create Post Type **/ function cpt_init() { // Products Custom Post Type register_post_type( 'cpt_products', array( // Internal name `cpt_products` - this is what we test against in queries 'labels' => array( // An array of Administrative labels 'name' => __( 'Products' ), 'singular_name' => __( 'Product' ), 'all_items' => __( 'View Products' ), 'add_new' => __( 'New Product' ), 'add_new_item' => __( 'New Product' ), 'edit_item' => __( 'Edit Product' ), 'view_item' => __( 'View Product' ), 'search_items' => __( 'Search Products' ), 'no_found' => __( 'No Products Found' ), 'not_found_in_trash' => __( 'No Products in Trash' ) ), 'public' => true, // Whether it will be publically available or only in the admin panel 'publicly_queryable'=> true, // " " 'show_ui' => true, // Whether we want this post type to show up in the admin panel 'show_in_nav_menus' => false, // If we want Products to show up in the `Appearance -> Menu` 'capability_type' => 'page', // Mostly used for user capability 'hierarchical' => false, // If you will allow products to have child products / assigned a parent 'rewrite' => array( 'slug' => 'product', 'with_front' => false ), // This is going to be what the single post will be located at `/product/product-name/` 'menu_icon' => 'dashicons-cart', // https://developer.wordpress.org/resource/dashicons/#welcome-widgets-menus 'menu_position' => 5, // Where you want it to show up in the admin panel 'supports' => array( 'title', 'editor', 'page-attributes', 'revisions' ) // What is actually shown when a new product is added - admin panel ) ); } add_action( 'init', 'cpt_init' ); 

Шаг четвертый – Upload functions.php – важная нота здесь – также сбросить постоянные ссылки, которые так же легко, как и в Settings -> Permalinks и нажмите кнопку «Сохранить» внизу страницы.


Подобно созданию типа сообщения, если вы хотите создать категории (аналогичные Категории публикации), вы можете сделать это, используя функцию register_taxonomy . Выполните шаги, описанные выше, до шага 3.

Шаг 3 – Регистрация таксономии

Первые два параметра важны для связывания таксономии с типом сообщения. Следующая важная часть – это hierarchical параметр – это будет разница между post_tags (false) и categories (true). Мы сделаем эту таксономию иерархической, которая похожа на категории сообщений.

 /** Add Custom Taxonomy **/ function tax_init() { // Product Categories register_taxonomy( 'tax_products', // Taxonomy slug 'cpt_products', // What post type we're assigning the taxonomy to. array( // Array of Arguments 'labels' => array( // User Friendly Labels 'name' => __( 'Product Categories' ), 'singular_name' => __( 'Product Category' ), 'search_items' => __( 'Search Product Categories' ), 'all_items' => __( 'All Product Categories' ), 'parent_item' => __( 'Parent Product Category' ), 'parent_item_colon' => __( 'Parent Product Category:' ), 'edit_item' => __( 'Edit Product Category' ), 'update_item' => __( 'Update Product Category' ), 'add_new_item' => __( 'Add New Product Category' ), 'new_item_name' => __( 'New Product Category' ), 'menu_name' => __( 'Product Categories' ) ), 'public' => true, // Whether it will be public or only used in the admin panel 'hierarchical' => true, // The differnce between *Tags* and *Categories* 'show_in_nav_menus' => true, // To show up in `Appearance -> Menus` or not. 'show_admin_column' => true, // If we want an column next to the title when listing our products 'rewrite' => array( 'slug' => 'products/category', 'with_front' => false, 'hierarchical' => true ) // Similar to post type, where to find the categories `products/category/category-1/` ) ); } add_action( 'init', 'tax_init'); 

Они называются пользовательскими типами сообщений . Существует несколько способов создать новый тип сообщения, используя плагин или создавая себя.

  • Если вы предпочитаете использовать плагин, попробуйте этот https://wordpress.org/plugins/custom-post-type-ui/
  • Если вы хотите создать их самостоятельно без каких-либо плагинов, вам нужно добавить некоторые коды в файл functions.php в своей теме. Это простой пример:
 function codex_custom_init() { $args = array( 'public' => true, 'label' => 'Books' ); register_post_type( 'book', $args ); } add_action( 'init', 'codex_custom_init' ); 

Это добавит новый тип контента (пост) под названием «Книга».

Подробнее см. На странице codex – https://codex.wordpress.org/Function_Reference/register_post_type.