web-dev-qa-db-fra.com

puis-je prévenir WP les utilisateurs (même admin) de supprimer des catégories personnalisées?

J'écris un plugin dans lequel j'ai une taxonomie personnalisée (catégorie). Je veux prévenir

  • tout utilisateur de
  • en supprimant certains de
  • catégories personnalisées .

Y a-t-il un moyen de le faire?.

Supposons que cette catégorie avec id1-id10 que personne (administrateur inclus) ne puisse supprimer.

1
Radek

Si vous souhaitez empêcher la suppression d'un seul ou d'une liste d'ID de catégorie au sein de l'administrateur, vous pouvez le faire en bloquant toutes les demandes supprimant la catégorie.

Vous ne pouvez pas utiliser WordPress facilement, mais il y a toujours un moyen de contourner le problème. Dans mon exemple, j'utilise les crochets check_admin_referer et check_ajax_referer (notez la faute de frappe dans le nom du crochet), combinés à une vérification si la demande est en réalité une pour supprimer une catégorie (supprimer quelque chose dans la taxinonomie category).

Exemple Plug-in à utiliser absolument : Exemple de suppression de catégories de blocs Wordpress

Lors de la suppression d'une catégorie bloquée, vous obtiendrez un message . Vous n'êtes pas autorisé à le faire. message (Ajax) ou un Cette catégorie est bloquée pour la suppression. et vous devez revenir avec votre navigateur.

4
hakre

vous pourriez utiliser

<?php $cats = wp_list_categories('echo'=>FALSE);?>

pour trouver les catégories, puis recherchez celles que vous voulez. Ensuite, vous pouvez utiliser

<?php wp_set_object_terms( $object_id, $missing_cat, 'category', TRUE ); ?>

pour les placer. Vous aurez besoin d’une publication qui ne vous dérange pas que toutes les catégories soient attribuées, une publication privée fonctionnerait bien ici.

Donc, le code final pourrait ressembler à quelque chose comme:

<?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');
?>

Ce code est directement du cerveau, frais et non testé.

Il est à noter que cela n’empêchera pas la suppression, il les remettra directement tant qu’il sera appelé init.

Pour empêcher la suppression, vous POUVEZ chercher à masquer l'option avec CSS dans le panneau d'administration.

1
Mild Fuzz

Je le fais avec une solution de contournement en utilisant le plug-in suivant pour charger les CSS personnalisés dans le panneau d'administration: http://wordpress.org/extend/plugins/custom-admin-css/ Et puis masquer l'option de suppression pour les articles/pages ou catégories requis.

0
Maarten van Spil