我发现很多这样的问题,但都不符合我的要求。在这里,我需要锁定一个名为settings的特定页面,而不是被其他管理员删除。但它应该能够编辑。是否有任何方法可以锁定特定页面。
如何禁用特定页面的删除选项?
2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成
防止垃圾站操作是一种粗糙的方法。您必须关闭应用程序并显示一条丑陋的错误消息,用于删除帖子的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 );
SO网友:Adarsh
found the solution
function restrict_page_deletion($post_ID)
{
$restricted_pageId = 177;
if(($post_ID == $restricted_pageId))
{
echo "You are not authorized to delete this page.";
exit;
}
}
add_action(\'wp_trash_post\', \'restrict_page_deletion\', 10, 1);
结束