J'écris un plugin multimédia qui utilise des tables personnalisées pour stocker son contenu. (par exemple, pas les tables de poste où wordpress stocke les données de pièces jointes). Maintenant, je cherche un moyen d'utiliser le système de commentaires wordpress par défaut pour ajouter des commentaires. (Ces commentaires ne figureront pas dans la table de commentaires standard, mais également dans une table personnalisée.
J'ai besoin de deux choses:
Je sais que c'est une idée loufoque, mais la table des messages et des pièces jointes est trop contraignante pour ce dont j'ai besoin. Des idées?
wp_list_comments()
n'a pas de filtres ni de crochets, donc ça va être un peu difficile, vous pouvez utiliser le crochet de filtre comments_array
add_filter('comments_array','my_custom_comments_list');
function my_custom_comments_list($comments, $post_id){
//if criteria are met
//pull your comments from your own table
//in to an array and return it.
return $my_comments;
//else return $comments
}
et comme pour "intercepter le commentaire soumettre et traiter" la réponse des puces serait la meilleure façon en utilisant le crochet de filtre preprocess_comment
mais vous voulez pouvoir éviter que le formulaire WordPress insère également le commentaire dans la table par défaut, vous pouvez donc utiliser le crochet d’action wp_insert_comment
pour le supprimer. le commentaire de la table par défaut juste après son insertion:
add_action('wp_insert_comment','remove_comment_from_default_table');
function remove_comment_from_default_table( $id, $comment){
//if criteria are met
//and the comment was inserted in your own table
//remove it from the default table:
wp_delete_comment($id, $force_delete = true);
}
Essayez d’utiliser le crochet de filtre preprocess_comment
, par exemple.
function my_handling_function( $comment_data ) {
// Here, do whatever you need to do with the comment
// modify it, pull data out of it to save somewhere
// or whatever you need to do
// just be sure to return $comment_data when you're done!
return $comment_data;
}
add_filter( 'preprocess_comment', 'my_handling_function' );