Na tuto změnu nepotřebujete žádný plugin. Všechny úpravy stačí vložit do šablony, souboru functions.php. Pro zobrazení nového pole a jeho uložení použijeme následující dvě funkce:
function pridat_pole_ke_komentarum($default) { $commenter = wp_get_current_commenter(); $default['fields']['email'] .= '<p>' . '<label for="twitter">Twitter</label> <input name="twitter" size="30" type="text" /></p>'; return $default; } add_filter('comment_form_defaults', 'pridat_pole_ke_komentarum'); function ulozit_komentar($comment_id) { add_comment_meta($comment_id, 'twitter', $_POST['twitter']); } add_action('comment_post', 'ulozit_komentar');
Výborně. Nyní se komentář i s twitterem uloží. Ještě ho ale musíme nějak zveřejnit. Otevřeme si tedy soubor comments.php, kde se reakce na články vypisují. U některých šablon se může lišit. Například pokud byste chtěli něco takového ve výchozím vzhledu Twenty ten, museli byste upravit funkci twentyten_comment v souboru functions.php.
Až vhodné místo naleznete, pak vložte kód:
<?php if ($comment->user_id == 0) $twitter = get_comment_meta(get_comment_ID(), 'twitter', true); else $twitter = get_user_meta($comment->user_id, 'twitter', true); if ($twitter != "") { ?> <a class="twitter-follow-button" href="http://twitter.com/<?php echo $twitter ?>">Follow @<?php echo $twitter ?></a> <?php } ?>
Poslední věc, co musíte udělat, je vložit odkaz na javacript od twitteru do patičky (footer.php)
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
A nyní mají všichni neregistrovaní možnost přidávat komentáře. Aby se ale poctivě registrovaní necítili ukřivděni, dáme i jim možnost propagovat svůj Twitter. Budou ho moci vkládat ve svém uživatelském profilu. To zařídíme následujícími funkcemi:
function pridat_polozky_do_profilu($user) { ?> <h3>Další údaje</h3> <table> <tr> <th><label for="twitter">Twitter</label></th> <td><input type="text" name="twitter" id="twitter" value="<?php echo esc_attr(get_the_author_meta('twitter', $user->ID)); ?>" /></td> </tr> </table> <?php } add_action('show_user_profile', 'pridat_polozky_do_profilu'); add_action('edit_user_profile', 'pridat_polozky_do_profilu'); function ulozit_polozky_do_profilu($user_id) { if (!current_user_can('edit_user', $user_id)) return false; update_usermeta($user_id, 'twitter', $_POST['twitter']); } add_action('personal_options_update', 'ulozit_polozky_do_profilu'); add_action('edit_user_profile_update', 'ulozit_polozky_do_profilu');
Nyní by vše mělo běžet jako na drátkách. V případě velkého zájmu bych z toho mohl udělat plugin. Piště vaše zkušenosti. A klidně si tu na komentářích můžete vyzkoušet, jak vše funguje.
Poznámka: Nejnovější upravený kód naleznete v oficiálním repozitáři pluginů pro WordPress.
2 responses to “Nové pole pro Twitter v komentářích”
Nick se udava se zavinacem nebo bez? Uvital bych to jako plugin. Jinak super napad.
Nick bez zavináče. To je jedna z věcí, která by se poté musela v pluginu poté odladit, aby se případně sám odmazal. Ale určitě se do toho pustím.