下面是另一种使用map_meta_cap
应用于map_meta_cap()
在has_cap()
的方法WP_User
类(PHP 5.4+):
add_filter( \'map_meta_cap\', function ( $caps, $cap, $user_id, $args )
{
// Nothing to do
if( \'delete_post\' !== $cap || empty( $args[0] ) )
return $caps;
// Target the payment and transaction post types
if( in_array( get_post_type( $args[0] ), [ \'payment\', \'transaction\' ], true ) )
$caps[] = \'do_not_allow\';
return $caps;
}, 10, 4 );
我们的目标是删除post和
payment
和
transaction
自定义帖子类型。
据我所知,浏览get_post_type_capabilities()
功能我们不需要map_meta_cap
参数设置为true,在register_post_type
设置,以针对delete_post
元能力。
附言:Here 有一些关于map_meta_cap
Justin Tadlock提供的过滤器和有用的示例here 还有ToschohereHere 我发现了一个我忘记写过的老例子,我们也可以进行调整,以避免在某些给定页面和用户角色上进行垃圾/删除Here\'s 由死亡医生提供的答案,链接到answer Seamus Leahy关于register_post_type
方法Here 在这个网站上还有更多的例子。希望有帮助