web-dev-qa-db-fra.com

Ne pas attribuer le contenu aux utilisateurs administrateurs

Pour des raisons de sécurité, je souhaite m'assurer qu'aucun contenu n'est attribué aux utilisateurs administrateurs de mes sites Web.

Essentiellement, je veux un moyen de changer automatiquement l'auteur de tout élément de contenu en quelque chose d'autre (y compris les mises en ligne).

En tant qu'administrateur, lorsque je supprime un utilisateur, WordPress me demande si je souhaite supprimer tout son contenu ou le rediffuser à un autre utilisateur.

Eh bien, je veux changer automatiquement l'auteur du contenu d'un utilisateur donné (un utilisateur admin) à un autre utilisateur (un auteur/éditeur).

Comment puis-je accomplir cela (j'ai généralement un accès de niveau racine aux serveurs hébergeant les sites)?

1
adam-asdf

Accrochez-vous dans une transition de statut de publication de sorte que chaque fois qu'une publication est publiée ou mise à jour, un contrôle est effectué pour voir si l'auteur est un administrateur. Si c'est le cas, mettez à jour l'auteur en un non-administrateur. Commencez par obtenir l'ID de l'utilisateur non administrateur que vous souhaitez définir comme auteur.

// change author ID to suit your needs
$newAuthor = 3;
// hook our function to fire when any post type's status changes
add_action('transition_post_status', 'wpse_change_author', 10, 3);
function wpse_change_author($new_status, $old_status, $post) {
    // only adjust published posts - which are either new or newly updated
    if($new_status == 'publish') {
        // check whether author is admin
        if(user_can($post->post_author, 'administrator')) {
            // update the post with new author ID
            wp_update_post(array('ID' => $post->ID, 'post_author' => $newAuthor));
        }
    }
}
2
WebElaine