防止垃圾站操作是一种粗糙的方法。您必须关闭应用程序并显示一条丑陋的错误消息,用于删除帖子的UI仍将存在。
相反,我建议使用map_meta_cap
滤器这将允许您更改用户的capabilities 对于单个帖子。
通常,当WordPress检查用户是否可以删除帖子时,它会检查“用户可以delete_post
这篇文章?“。它解决这个问题的方法是map_meta_cap
作用
此功能决定哪些功能delete_post
映射到。例如,如果用户创建了帖子,那么函数映射delete_post
到delete_posts
. 因此,如果用户具有delete_posts
然后他们可以删除帖子。如果用户没有创建帖子,则函数映射delete_post
到delete_others_posts
.
这个map_meta_cap
过滤器允许我们更改此映射。所以我们要用它来绘制地图delete_post
到do_not_allow
对于这个特定的职位。那么任何用户都无法删除该帖子。
这是执行此操作的功能:
function wpse_312694_restrict_page_deletion( $caps, $cap, $user_id, $args ) {
$post_id = $args[0];
if ( $cap === \'delete_post\' && $post_id === 117 ) {
$caps[] = \'do_not_allow\';
}
return $caps;
}
add_filter( \'map_meta_cap\', \'wpse_312694_restrict_page_deletion\', 10, 4 );