web-dev-qa-db-fra.com

Comment puis-je permettre aux rédacteurs de laisser des commentaires sur des publications qui n'ont pas encore été publiées?

Sur mon blog de football NFL, tous les utilisateurs sont autorisés à publier des articles. Les nouveaux inscrits se voient attribuer le statut de contributeur. Lorsque les utilisateurs publient un message, celui-ci est examiné par un éditeur. Ce dernier planifie la publication du message à un moment qui correspond à celui de notre blog.

Plusieurs rédacteurs m'ont demandé s'ils pouvaient faire un commentaire sur l'article juste après avoir édité le post et programmé sa publication, mais avant sa publication.

Par commentaires, j'entends des commentaires sur le contenu de l'article, et non des commentaires adressés au contributeur sur son style d'écriture, sa grammaire, son orthographe, etc., ni les commentaires que d'autres éditeurs peuvent voir dans le backend. J'utilise Peter's Post Notes et Collaboration de Peter E-mails pour gérer la communication avec les contributeurs sur ces problèmes/situations.

Ce dont j'ai besoin, par exemple: Un contributeur écrit un article sur la signature de Peyton Manning avec les Broncos de Denver. L'éditeur est informé à 22 heures que le message a été soumis pour examen. Il vérifie la publication pour la grammaire, l’orthographe, les balises, la catégorie appropriée, etc. L’éditeur apporte toutes les corrections nécessaires et planifie la publication de la publication à 9 heures demain. Le rédacteur en chef souhaite maintenant laisser ses impressions sur le contrat de Peyton Manning avec les Broncos à la vue du monde. Le problème, le post est publié à 9h demain, mais il le lit à 22h aujourd'hui ... et ne veut pas revenir 11 heures plus tard pour laisser un commentaire sur un post qu'il lit actuellement.

Cela a du sens de permettre à l'éditeur de commenter avant que l'article ne soit publié, car l'éditeur l'a déjà lu. J'aimerais donc faciliter la tâche aux rédacteurs, si possible, plutôt que l'éditeur ait besoin de revenir une fois que l'article a été publié. faire leurs commentaires.

Je n'ai vraiment aucune préférence quant à savoir si l'horodatage du commentaire est identique à l'heure de publication du message ou à l'heure à laquelle le commentaire a été réellement rédigé, même si c'était avant la publication prévue du message.

J'ai trouvé un message de forum âgé de deux ans ( http://core.trac.wordpress.org/ticket/11810 ) traitant d'une vulnérabilité dans WordPress. Auparavant, cela autorisait les commentaires sur les publications non publiées, mais je ne trouve pas le moyen d'autoriser les rédacteurs à laisser des commentaires sur les publications non publiées dans WordPress 3.

1
Travis Pflanz

Grâce au processus de réflexion initié par userabuser , à des recherches plus approfondies, à des essais et à des erreurs, je suis parvenu à une solution.

J'ai ajouté un champ méta personnalisé utilisant Types de contenu simples (tout simplement parce que j'ai utilisé ce plugin pendant un moment) et ajouté le code suivant à mes fonctions. php

if (current_user_can('editor')){
add_action('pending_to_future', 'insert_editor_comment');
add_action('pending_to_publish', 'insert_editor_comment');

function insert_editor_comment( $data){

global $current_user;
    get_currentuserinfo();

global $post;

$time = current_time('mysql');
$editor_comment = get_post_meta($post->ID, 'ecpt_comment', TRUE);

$data = array(
'comment_post_ID' => $post->ID,
'comment_author' => $current_user->display_name,
'comment_author_email' => $current_user->user_email,
'comment_author_url' => $current_user->user_url,
'comment_content' => $editor_comment,
'comment_type' => 'comment',
'comment_parent' => 0,
'user_id' => $current_user->ID ,
'comment_author_IP' => '127.0.0.1',
'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
'comment_date' => $time,
'comment_approved' => 1,
'comment_subscribe' => 'Y',
);

wp_insert_comment($data);
}
}

Références

Additionnel

La méta-boîte pour les commentaires n'est visible que pour le statut d'éditeur et au-dessus.

Etant donné qu'un éditeur peut choisir de publier un message immédiatement ou de le planifier pour une publication ultérieure, j'ai ajouté des actions pour enregistrer le commentaire dans les deux cas.

J'ai également automatiquement souscrit des éditeurs aux nouveaux commentaires faits sur le post.

Si vous avez des suggestions pour améliorer cette méthode, s'il vous plaît faites le moi savoir!

1
Travis Pflanz

Cela dépend de qui les commentaires sont pour, sont-ils pour les administrateurs et les éditeurs ou sont-ils aussi pour les contributeurs?

J'ai mis en place un système un peu élaboré qui gère une partie de ce que vous demandez, mais le moyen le plus simple de réaliser quelque chose de ce type consiste à utiliser des champs personnalisés.

En particulier, une métabox personnalisée avec des champs répétés vous permettant d’ajouter plusieurs champs (par exemple des zones de texte) pour lesquelles les éditeurs peuvent laisser leurs commentaires.

Selon la structure de votre blog, les contributeurs peuvent ne pas être en mesure de voir ces commentaires. Habituellement, ils les verront s’ils ont accès au tableau de bord. Si, en revanche, ils contribuent via le front-end de votre site, ils ne verront pas ces commentaires, sauf si vous interrogez vos champs personnalisés dans votre modèle.

Dans les deux cas, vous pouvez également limiter l'affichage de ces champs à une certaine classe d'utilisateurs.

Je recommande fortement d'utiliser le WP Alchemy Metabox Class trouvé ICI

Il est puissant, bien documenté et relativement facile à utiliser, avec de nombreux exemples de fichiers metabox que vous pouvez utiliser directement depuis le portail et qui vous aideront à comprendre l’utilisation qui en est faite.

METTRE À JOUR

Ok, je réfléchis simplement à voix haute, mais je pense que vous devrez toujours utiliser un champ personnalisé à partir de l'écran de post-édition pour lequel votre éditeur peut laisser son commentaire. Toutefois, après la publication, vous vous accrocherez à wp_comments et prenez la valeur du champ personnalisé et insérez-le dans les commentaires.

Toutefois, il pourrait être tout aussi facile d'appeler la valeur du champ personnalisé à partir de votre fichier de thème mais dans la section où vous affichez vos commentaires. Ensuite, en fait, vous pouvez facilement mettre en forme les commentaires pour les rendre remarquables d’une manière unique (sous forme de commentaires éditoriaux).

Mais si vous ne voulez absolument pas faire cela, alors vous devez penser à ... (code conceptuel ci-dessous)

add_action('pending_to_publish_CUSTOM_POST_TYPE_NAME', 'insert_editor_comment');

function insert_editor_comment( $data){

$time = current_time('mysql');

$data = array(
    'comment_post_ID' => 1,
    'comment_author' => 'admin',
    'comment_author_email' => '[email protected]',
    'comment_author_url' => 'http://',
    'comment_content' => 'content here',
    'comment_type' => '',
    'comment_parent' => 0,
    'user_id' => 1,
    'comment_author_IP' => '127.0.0.1',
    'comment_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)',
    'comment_date' => $time,
    'comment_approved' => 1,
);

wp_insert_comment($data);
}

Encore une fois, cela n’est que conceptuel, je n’ai jamais fait quelque chose comme ça, mais cela devrait vous faire réfléchir. Si j'ai un moment, je pourrais même le tester! Bien que je suis sûr que beaucoup d’autres pourraient vous joindre et sceller cet accord pour vous assez facilement.

3
userabuser