• DONATE to NULLED!
    Вы можете помочь Форуму и команде, поддержать финансово.
    starwanderer - модератор этого раздела будет Вам благодарен!

Помощь Свои рубрики (category) для произвольных типов записей (custom post type)

D'Jack

Постоялец
Регистрация
22 Сен 2012
Сообщения
446
Реакции
173
Привет!

Суть вопроса в следующем, в WP в Записях есть категории, тут же есть кастомные типы записей заведенные через functions.php, с
PHP:
'taxonomies' => array( 'category' )
Как сделать что бы у кастомных типов были независимые от записей 'category', то есть при добавлении в категории записей, это категория не отображалась в кастомных?
 
Вот у меня тоже недавно возникал похожий вопрос.
Если сделать 2 произвольных типа записи, можно один из них назначить в качестве категории для другого?

Как оно там вообще происходит с категориями? Есть же плагины, например галерей, где создаёшь галерею с непосредственно картинками и присваиваешь её к категории галерей.
Жрачка(категория)
Хлеб (галерея)
Мясо (галерея)
Супы (галерея)
И всё это работает в рамках одного плагина и не лезет в другие категории и типы записей, значит имеет свои.

Можно как-то это реализовать через functions?

P.S. Я правильно понял ТС?
 
Создаешь кастомный тип записей, затем создаешь таксомномию, при создании таксономии упоминаешь тот новый тип записей

Код:
register_taxonomy('new_tax','new_post',$args);
 
Рекомендую плагин Custom Post Type UI Для просмотра ссылки Войди или Зарегистрируйся Через него можно добавлять новые таксономии и типы записей, гораздо удобнее чем через functions.php. И нагляднее.
Как сделать что бы у кастомных типов были независимые от записей 'category', то есть при добавлении в категории записей, это категория не отображалась в кастомных?
С помощью плагина создаете собственные типы записей и таксономии, затем назначаете типу записи созданную таксономию

upload_2018-8-21_9-56-0.png
ну или наоборот при создании таксономии укажите типы записей с которыми она будет связана
upload_2018-8-21_9-50-56.png

Если сделать 2 произвольных типа записи, можно один из них назначить в качестве категории для другого?
Нет, так сделать нельзя. Есть типы записей - например стандартные посты и страницы, и есть таксономии - метки и рубрики, это разные вещи. Можно создать собственные типы записей и таксономии, связать их между собой как показал выше.
Но! Если сильно хочется увязать между собой две записи, то можно это организовать с помощью произвольных полей. В плагине Advanced Custom Fields PRO есть тип поля Одна запись
upload_2018-8-21_11-7-54.png
Можно настроить выбор записей по таксономии или по типу записи. Как настроить вывод связанных постов в шаблоне это отдельный вопрос)
 
Да зачем плагин-то?? Все решается 38 строчками в functions.php !!!

Создаем новый тип поста sm_project:
PHP:
function create_post_type() {
  $labels = array(
    'name'               => 'Projects',
    'singular_name'      => 'Project',
    'menu_name'          => 'Projects',
    'name_admin_bar'     => 'Project',
    'add_new'            => 'Add New',
    'add_new_item'       => 'Add New Project',
    'new_item'           => 'New Project',
    'edit_item'          => 'Edit Project',
    'view_item'          => 'View Project',
    'all_items'          => 'All Projects',
    'search_items'       => 'Search Projects',
    'parent_item_colon'  => 'Parent Project',
    'not_found'          => 'No Projects Found',
    'not_found_in_trash' => 'No Projects Found in Trash'
  );

  $args = array(
    'labels'              => $labels,
    'public'              => true,
    'exclude_from_search' => false,
    'publicly_queryable'  => true,
    'show_ui'             => true,
    'show_in_nav_menus'   => true,
    'show_in_menu'        => true,
    'show_in_admin_bar'   => true,
    'menu_position'       => 5,
    'menu_icon'           => 'dashicons-admin-appearance',
    'capability_type'     => 'post',
    'hierarchical'        => false,
    'supports'            => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' ),
    'has_archive'         => true,
    'rewrite'             => array( 'slug' => 'projects' ),
    'query_var'           => true
  );

  register_post_type( 'sm_project', $args );
}

Создаем две таксономии для него, как и стандартные у ВП, т.е. типа категория sm_project_type и типа тег sm_project_attribute:
PHP:
function create_taxonomies() {

  // Add a taxonomy like categories
  $labels = array(
    'name'              => 'Types',
    'singular_name'     => 'Type',
    'search_items'      => 'Search Types',
    'all_items'         => 'All Types',
    'parent_item'       => 'Parent Type',
    'parent_item_colon' => 'Parent Type:',
    'edit_item'         => 'Edit Type',
    'update_item'       => 'Update Type',
    'add_new_item'      => 'Add New Type',
    'new_item_name'     => 'New Type Name',
    'menu_name'         => 'Types',
  );

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

  register_taxonomy('sm_project_type',array('sm_project'),$args);

  // Add a taxonomy like tags
  $labels = array(
    'name'                       => 'Attributes',
    'singular_name'              => 'Attribute',
    'search_items'               => 'Attributes',
    'popular_items'              => 'Popular Attributes',
    'all_items'                  => 'All Attributes',
    'parent_item'                => null,
    'parent_item_colon'          => null,
    'edit_item'                  => 'Edit Attribute',
    'update_item'                => 'Update Attribute',
    'add_new_item'               => 'Add New Attribute',
    'new_item_name'              => 'New Attribute Name',
    'separate_items_with_commas' => 'Separate Attributes with commas',
    'add_or_remove_items'        => 'Add or remove Attributes',
    'choose_from_most_used'      => 'Choose from most used Attributes',
    'not_found'                  => 'No Attributes found',
    'menu_name'                  => 'Attributes',
  );

  $args = array(
    'hierarchical'          => false,
    'labels'                => $labels,
    'show_ui'               => true,
    'show_admin_column'     => true,
    'update_count_callback' => '_update_post_term_count',
    'query_var'             => true,
    'rewrite'               => array( 'slug' => 'attribute' ),
  );

  register_taxonomy('sm_project_attribute','sm_project',$args);
}
 
Назад
Сверху