我可以阻止WP用户(甚至管理员)删除自定义类别吗?

时间:2010-11-23 作者:Radek

我正在编写一个插件,其中有自定义分类法(category)。我想阻止

  • any user 来自deleting somecustom categories.

    假设id1-id10的类别没有人(包括管理员)可以删除。

3 个回复
最合适的回答,由SO网友:hakre 整理而成

如果要阻止删除admin中的单个或一组类别ID,可以通过阻止所有删除该类别的请求来阻止。

wordpress中没有可以轻松使用的钩子,但总会有解决方法。在我的示例中,我使用check_admin_referercheck_ajax_referer 钩子(注意钩子名称中的输入错误)与检查请求是否确实是删除类别的请求(删除category 分类学)。

实例Must-Use Plugin: Wordpress Block Category Deletion Example

删除被阻止的类别时,您将获得一个您没有权限这样做的权限消息(Ajax)或阻止删除该类别消息,您需要使用浏览器返回。

SO网友:Mild Fuzz

你可以使用

<?php $cats = wp_list_categories(\'echo\'=>FALSE);?>
要查找类别,请搜索您想要的类别。然后您可以使用

<?php wp_set_object_terms( $object_id, $missing_cat, \'category\', TRUE ); ?>
把它们放进去。你需要一个职位,你不介意把所有类别都分配给它,一个私人职位在这里会很好。

因此,最终的代码可能类似于:

<?php 
function cats_protector(){
    $current_cats = wp_list_categories(\'echo\'=>FALSE);
    $my_cats = array(\'list\',\'of\',\'required\',\'categories\');

    foreach ($my_cats as $cat){
        if(!in_array($cat, $current_cats){
            wp_set_object_terms( 15, $cat, \'category\', TRUE );
        }
    }
}
add_action(\'init\',\'cats_protector\');
?>
这个代码是直接从大脑中提取的,新鲜且未经测试。

值得注意的是,这不会阻止删除,只要在init上调用它,它只会将它们直接放回原处。

为了防止删除,可以在管理面板中使用CSS隐藏选项。

SO网友:Maarten van Spil

我通过使用以下插件在管理面板中加载自定义css来解决此问题:http://wordpress.org/extend/plugins/custom-admin-css/然后隐藏所需帖子/页面或类别的删除选项。

结束

相关推荐