• Через register_post_type создал тип записей. Теперь стоит задача — а как сделать? чтобы в админке этот этот тип поста был виден только админам? (желательно скрыть не на уровне цсс, а чуть более капитально, чтобы даже по прямой ссылке не админы не могли попасть в меню создания новых постов данного типа)

    add_action('init', 'crmre_my_init', 70);
    function crmre_my_init() {
    $labels = array(
    ...
    );
    $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post', // создаем по типу страниц
    'has_archive' => true,
    'hierarchical' => false,
    'menu_position' => 50,
    'menu_icon' => 'dashicons-admin-home',
    'supports' => array('title','editor','author','thumbnail','excerpt','custom-fields')
    );
    register_post_type('book', $args); // регистрируем тип поста
    }

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Юрій

    (@yube)

    https://codex.wordpress.org/Function_Reference/register_post_type

    capabilities не по «по типу», а детально с указанием возможностей. Типа такого

    'capabilities' => array(
      'edit_post'          => 'manage_options',
      'delete_post'        => 'manage_options',
      'edit_posts'         => 'manage_options',
      'edit_others_posts'  => 'manage_options',
      'publish_posts'      => 'manage_options',
      'create_posts'       => 'manage_options',
    ),

    function wpse28782_remove_menu_items() {
        if( !current_user_can( 'administrator' ) ):
            remove_menu_page( 'edit.php?post_type=book' );
        endif;
    }
    add_action( 'admin_menu', 'wpse28782_remove_menu_items' );
Просмотр 2 ответов — с 1 по 2 (всего 2)

Тема «Скрыть произвольный тип поста из админки» закрыта для новых ответов.