Nové pole pro Twitter v komentářích


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”

  1. 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.