2010-10-29 8 views
4

J'essaie d'étendre la fonctionnalité des commentaires dans une installation WordPress. J'ai lu une allusion à une fonctionnalité insaisissable «type de commentaire personnalisé», mais je n'ai trouvé aucune information. Au lieu de cela, je pensais que j'ajouterais une colonne personnalisée à la table de base de données 'comments'. C'est la partie facile. Ce que je n'ai aucune idée de comment faire est de personnaliser les requêtes de commentaires pour enregistrer, mettre à jour et lire les commentaires pour refléter l'existence de la nouvelle colonne de la table. Je pensais qu'il y aurait un filtre pour modifier la requête, mais je ne trouve pas qui le ferait ... Des idées?Personnaliser WordPress commentaire post requête

Répondre

9

Il n'y a pas vraiment de type de commentaire personnalisé mais vous pouvez facilement ajouter des colonnes en utilisant "comment meta" qui est une table de paires nom/valeur associée où chaque paire nom/valeur est associée à un commentaire donné en utilisant un 'meta_key'(s'il vous plaît ne pas ajouter une colonne à la base de données SQL, c'est mal vus dans la communauté des développeurs WordPress.)

Supposons que vous vouliez laisser l'utilisateur d'ajouter leur compte Twitter. C'est le code qui sauverait mon compte Twitter au commentaire identifié par $comment_ID(préfixer le nom de clé méta avec un trait de soulignement est une bonne idée pour tout méta que vous maintenez via le code personnalisé vs que vous laissiez les utilisateurs sélectionner la clé méta):

update_comment_meta($comment_ID,'_twitter','mikeschinkel'); 

ensuite de charger la valeur à afficher dans votre modèle que vous appelez simplement get_comment_meta()(le troisième paramètre moyen pour renvoyer une valeur unique, pas un tableau de valeurs):

$twitter = get_comment_meta($comment_ID,'_twitter',true); 

de cours wi Bien savoir comment accrocher WordPress pour intégrer cela les fonctions ci-dessus ne serait pas beaucoup d'aide. Il y a deux crochets, vous aurez besoin d'utiliser, le premier étant wp_insert_comment qui sera appelé lorsque WordPress enregistre un commentaire:

add_action('wp_insert_comment','yoursite_wp_insert_comment',10,2); 
function yoursite_wp_insert_comment($comment_ID,$commmentdata) { 
    $twitter = isset($_GET['twitter']) ? $_GET['twitter'] : false; 
    update_comment_meta($comment_ID,'_twitter',$twitter); 
} 

Le second est un peu plus compliqué; celui qui vous permet d'ajouter des champs et de modifier d'autres aspects du formulaire de commentaire. Le crochet 'comment_form_defaults' définit les valeurs par défaut pour le commentaire et vous ajoutez nous allons le code HTML pour un champ Twitter (j'accroché le format pour le code HTML de la fonction comment_form() trouvée dans /wp-includes/comment-template.php en ligne 1511 dans WP v3.0.1)

add_filter('comment_form_defaults','yoursite_comment_form_defaults'); 
function yoursite_comment_form_defaults($defaults) { 
    $email = $defaults['fields']['email']; 
    $label = __('Twitter'); 
    $value = isset($_GET['twitter']) ? $_GET['twitter'] : false; 
    $defaults['fields']['twitter'] =<<<HTML 
<p class="comment-form-twitter"> 
<label for="twitter">{$label}</label> 
<input id="twitter" name="twitter" type="text" value="{$value}" size="30" /> 
</p> 
HTML; 
    return $defaults; 
} 

Et voici à quoi il ressemble en action:

WordPress Comments form with a Twitter field

Cette forme commentaire extensibilité est nouvelle pour WordPress 3.0 si par sa nature d'être nouveau dans un projet open-source, il ne va probablement pas à accommodat (comme il n'y avait pas de moyen facile d'obtenir une valeur mémorisée pour le nom d'écran Twitter) mais j'espère que vous serez en mesure de plier assez pour vous et obtenir ce dont vous avez besoin et à l'avenir libéré de WordPress l'API de formulaire de commentaire va presque certainement s'améliorer.

Espérons que cela aide.

-Mike

post-scriptum À l'avenir, envisagez de publier votre question sur le site partenaire de StackOverflow: WordPress Answers; C'est là que la plupart des passionnés de WordPress traînent, ceux qui peuvent répondre rapidement à des questions comme celle-ci.

+0

Quelle réponse grande et complète !! Merci beaucoup! Je vais certainement aller à Wordpress Answers à l'avenir. Merci encore!! –

+0

@ Regis Zaleman - Vous êtes les bienvenus! – MikeSchinkel

+0

@MikeSchinkel - Tout d'abord, votre réponse est parfaite, je veux juste demander qu'il est possible de montrer cette valeur de méta aux visiteurs? Je veux dire laisser les utilisateurs entrer leur âge et laissez-moi montrer l'âge des commentateurs dans son coment. Merci. – Alper