これは私以外の誰かには明白かもしれません。 「画像」は確かに「投稿」の一形態であることをどこかで読んだことを覚えていると思います。
「クライアント」としてログインし、メディアポップアップを起動して画像を参照し、「表示」をクリックして開き、「画像の編集」をクリックすると、-1が表示されます。すなわち他には「-1」以外は表示されません。
カスタムロールに "edit_posts"の機能を割り当てることでこの問題を解決できます。どうしてこれなの?私がこれをするとすぐに、私は別の問題に悩まされています、「クライアント」ユーザーロールは今私がしたくない投稿、コメントとツールへのアクセスを持っています。
おそらく、自分のカスタム投稿タイプを機能で正しく設定していないのでしょうか。 「クライアント」に画像の編集を許可し、投稿へのアクセスを許可しないようにするにはどうすればよいですか。
$args = array(
'label' => 'Listing',
'description' => '',
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'map_meta_cap' => true,
'capability_type' => 'listing',
'capabilities' => array(
'edit_post' => 'edit_listing',
'read_post' => 'read_listing',
'delete_post' => 'delete_listing',
'edit_posts' => 'edit_listings',
'edit_others_posts' => 'edit_others_listings',
'publish_posts' => 'publish_listings',
'read_private_posts' => 'read_private_listings',
'delete_posts' => 'delete_listings',
'delete_private_posts' => 'delete_private_listings',
'delete_published_posts' => 'delete_published_listings',
'delete_others_posts' => 'delete_others_listings',
'edit_private_posts' => 'edit_private_listings',
'edit_published_posts' => 'edit_published_listings',
),
'menu_position' => 5,
'hierarchical' => false,
'has_archive' => false,
'rewrite' => array('slug' => 'listing'),
'query_var' => true,
'supports' => array('title'),
'labels' => $labels
);
images が Attachments 、および Attachments が Post-Type であるためです。したがって、添付ファイルである投稿である画像を編集するには、edit_post
機能が必要です。
_編集_
capability
マッピング配列のキー/値を逆にしていませんか?
例えば'edit_posts' => 'edit_listings'
があります。代わりに'edit_listings' => 'edit_posts'
ではないでしょうか。
私はこの質問が1年前になったことを知っていますが、実際にこれを達成する方法があることを私は発見したところです。
add_filter( 'user_has_cap', 'my_user_has_cap', 10, 3 );
function my_user_has_cap( $user_caps, $req_cap, $args ) {
$post = get_post( $args[2] );
if ( 'attachment' != $post->post_type )
return $user_caps;
if ( 'delete_post' == $args[0] ) {
if ( $user_caps['delete_others_posts'] )
return $user_caps;
if ( !isset( $user_caps['delete_others_listings'] ) or !$user_caps['delete_others_listings'] )
return $user_caps;
$user_caps[$req_cap[0]] = true;
}
if ( 'edit_post' == $args[0] ) {
if ( $user_caps['edit_others_posts'] )
return $user_caps;
if ( !isset( $user_caps['edit_others_listings'] ) or !$user_caps['edit_others_listings'] )
return $user_caps;
$user_caps[$req_cap[0]] = true;
}
return $user_caps;
}
これは主に このCodexの記事 に基づいています。
私はまだ私のヘッドラウンド機能フィルタを得ていて、それは午前2時04分なので、私のコードはおそらく改善可能かもしれません...