Saya tidak bisa mendapatkannya sehingga peran pengguna saya untuk pemasok dapat membaca jenis kiriman pengiriman. Itu muncul di menu mereka tetapi ketika Anda mengkliknya Anda mendapatkan Anda tidak diizinkan untuk melihat pesan kesalahan halaman ini .
Ini berfungsi jika saya add_cap('read_posts')
tetapi saya tidak ingin mereka melihat tulisan biasa hanya jenis kiriman pengiriman.
Saya memiliki peran pengguna pemasok dengan kemampuan berikut.
WP_Role Object
(
[name] => supplier
[capabilities] => Array
(
[read] => 1
[edit_shipment] => 1
[read_shipment] => 1
[edit_others_shipments] => 1
[publish_shipments] => 1
[read_private_shipments] => 1
[edit_shipments] => 1
[create_shipment] => 1
[read_shipments] => 1
)
)
Dan saya telah menyiapkan jenis posting untuk pengiriman dengan berikut ini
function shipment_post_type() {
$labels = array(
'name' => _x( 'Shipments', 'Post Type General Name', 'sage' ),
'singular_name' => _x( 'Shipment', 'Post Type Singular Name', 'sage' ),
'menu_name' => __( 'Shipments', 'sage' ),
'name_admin_bar' => __( 'Shipments', 'sage' ),
'archives' => __( 'Shipment Archives', 'sage' ),
'parent_item_colon' => __( 'Parent shipment:', 'sage' ),
'all_items' => __( 'All shipments', 'sage' ),
'add_new_item' => __( 'Add New shipment', 'sage' ),
'new_item' => __( 'New shipment', 'sage' ),
'edit_item' => __( 'Edit shipment', 'sage' ),
'update_item' => __( 'Update shipment', 'sage' ),
'view_item' => __( 'View shipment', 'sage' ),
'search_items' => __( 'Search shipments', 'sage' ),
'not_found' => __( 'Not found', 'sage' ),
'not_found_in_trash' => __( 'Not found in Trash', 'sage' ),
'featured_image' => __( 'Featured Image', 'sage' ),
'set_featured_image' => __( 'Set shipment image', 'sage' ),
'remove_featured_image' => __( 'Remove shipment image', 'sage' ),
'use_featured_image' => __( 'Use as shipment image', 'sage' ),
'insert_into_item' => __( 'Insert into shipment', 'sage' ),
'uploaded_to_this_item' => __( 'Uploaded to this shipment', 'sage' ),
'items_list' => __( 'shipments list', 'sage' ),
'items_list_navigation' => __( 'Constests list navigation', 'sage' ),
'filter_items_list' => __( 'Filter shipments list', 'sage' ),
);
$args = array(
'label' => __( 'shipments', 'sage' ),
'description' => __( 'Manage all shipments, sweepstakes and giveaways.', 'sage' ),
'labels' => $labels,
'supports' => array( 'revisions' ),
'taxonomies' => array( '' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-archive',
'show_in_admin_bar' => true,
'show_in_nav_menus' => false,
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => true,
'publicly_queryable' => true,
'map_meta_cap' => true,
'capabilities' => array(
'edit_post' => 'edit_shipment',
'read_post' => 'read_shipment',
'read_posts' => 'read_shipments',
'delete_post' => 'delete_shipment',
'delete_posts' => 'delete_shipments',
'edit_posts' => 'edit_shipments',
'edit_others_posts' => 'edit_others_shipments',
'publish_posts' => 'publish_shipments',
'read_private_posts' => 'read_private_shipments',
'create_posts' => 'create_shipments',
),
);
register_post_type( 'shipment', $args );
}
add_action( 'init', 'shipment_post_type', 0 );
custom-post-types
user-roles
capabilities
Nicholas Koskowski
sumber
sumber
add_role()
dan tutupnyaadd_cap()
?Jawaban:
Jenis pos khusus Anda sepertinya sudah diatur dengan benar. Ini berfungsi pada instalasi tes saya. Coba ini alih-alih add_role dan kode add_cap apa pun yang sedang Anda gunakan. (Hanya untuk tujuan pengujian. Jangan menggunakannya dalam kode produksi, karena alasan yang diuraikan di bawah ini.) Ini bekerja untuk saya:
Sangat penting untuk diingat bahwa menambahkan peran dan kemampuan pengguna sebenarnya menyimpan data ke database. Jadi, jika Anda memiliki versi kode Anda sebelum itu tidak berfungsi, kemudian menambahkan sesuatu yang akan membuatnya berfungsi, itu mungkin tidak akan berpengaruh jika masih ada data lama di database Anda. add_role () mengembalikan null jika peran sudah ada dalam database. Untuk kode produksi, Anda harus benar-benar menggunakan pengaktifan plugin dan kait penonaktifan untuk hal ini alih-alih menjalankannya setiap saat, seperti ini:
sumber
add_role()
danremove_role()
seharusnya tidak dieksekusi dalam setiap permintaan. Perhatikan bahwa setelah peran ditambahkan ke basis data, Anda tidak perlu menambahkannya lagi. Biasanya Anda menambahkan peranregister_activation_hook
dan menghapus peran diregister_deactivation_hook
/register_unistall_hook
; selain itu, Anda harus menjalankanremove_role()
/add_role()
hanya jika itu benar-benar diperlukan.Di objek peran Anda, Anda memiliki kemampuan 'create_shipment' di mana seharusnya itu sebenarnya mengatakan 'create_shipments'. Sepertinya ada 's' yang hilang dalam kode Anda di mana pun Anda menambahkan kemampuan itu.
sumber
Anda mungkin mencoba:
sumber
Coba ini. 'dms_document' adalah jenis posting khusus.
sumber