Comment éditer leurs messages publiés laisser aux contributeurs de créer une nouvelle révision (projet)
-
22-10-2019 - |
Question
J'utilise un type de poste personnalisé pour laisser les contributeurs ont une page personnelle sur le site.
Chaque fois qu'un utilisateur enregistre sur mon site un script crée un poste de type personnalisé qui a l'utilisateur l'enregistrement comme l'auteur.
Pour modérer les entrées des utilisateurs ce poste est publié par un éditeur.
Je voudrais les utilisateurs (collaborateurs) être:
- Impossible d'ajouter d'autres messages de ce type personnalisé;
- capable de modifier le leur message déjà publié l'auteur;
- et leurs modifications doivent être approuvées par un éditeur avant d'être publié.
J'utilise utilisateur Rôle éditeur pour gérer les rôles et capacités.
Est-il possible de le faire?
La solution
Utilisation de l'éditeur de rôle ou de la portée du rôle que vous pouvez définir des contributeurs à modifier vous type personnalisé poste, mais pas publier pour chaque changement sera défini comme projet jusqu'à l'approbation, et de limiter la création de nouveaux postes de votre type de poste personnalisé, vous pouvez utiliser mon Bainternet messages Création Limites
Mise à jour
Pour l'approbation de la force re modifications ajouter ce code
add_filter( 'wp_insert_post_data', 're_aprove', '99', 2 );
function re_aprove( $data, $postarr ) {
//check if current user is not admin
if ( ! current_user_can( 'manage_options' ) && 'YOUR_CUSTOM_TYPE' === $postarr['post_type'] ) {
if ( 'publish' === $data['post_status'] ) {
$data['post_status'] = 'pending';
}
}
return $data;
}
et le changement YOUR_CUSTOM_TYPE
à votre nom du type de poste personnalisé.
Autres conseils
mine ne fonctionnait pas jusqu'à ce que j'ai ajouté le '99', 2); à la fin de la add_filter.
Voici la référence à pourquoi: http://codex.wordpress.org/Plugin_API/ Filter_Reference / wp_insert_post_data
add_filter('wp_insert_post_data','re_aprove', '99', 2);
function re_aprove( $data , $postarr ){
global $current_user;
get_currentuserinfo();
//check if current user is not admin
if (!current_user_can('manage_options') && $postarr['post_type'] == "candy-item" ){
if ($data['post_status'] = "publish"){
$data['post_status'] = "pending";
}
}
return $data;
}
Enfin, j'ai résolu avec révisionnelle plug-in , http://wordpress.org/extend/plugins/revisionary/ il est utilisé pour faire exacly ce que je demande dans le titre du sujet
pour un contrôle plus précis sur les capacités (avec révisionnelle déjà intégré) il y a Rôle Scoper http://wordpress.org/extend/plugins/role-scoper/
le premier est vraiment facile à installer et à utiliser le second a besoin de beaucoup plus de pratique, userinterface il est un peu déroutant, mais il est vraiment puissant