Sådan tilføjer du TinyMCE visual editor til kommentar-feltet i WordPress

TinyMCE visual editor i kommentar-feltet i WordPress
Helt ærligt, hvor mange almindelige mennesker forstår de dér mystiske HTML koder, som kan bruges i kommentarer til blog-indlæg? I de themes, der følger med WordPress, finder man ofte under kommentarfeltet følgende kryptiske besked:

Disse HTML koder og attributter er tilladte: <a href=‟‟ title=‟‟> <abbr title=‟‟> <acronym title=‟‟> <b> <blockquote cite=‟‟> <cite> <code> <del datetime=‟‟> <em> <i> <q cite=‟‟> <strike> <strong>

Hvis du vil give dine brugere nogle værktøjer til at formatere indholdet i kommentarer med, hvorfor så ikke give dem en ordentlig WYSIWYG editor? Det kunne passende være den, der allerede er indbygget i WordPress, nemlig TinyMCE.

Indsæt blot følgende kodestump i functions.php filen i dit theme:

<?php
add_filter( 'comment_form_field_comment', 'comment_editor' );

function comment_editor() {
    global $post;

    ob_start();

    wp_editor( '', 'comment', array(
        'textarea_rows' => 15,
        'teeny' => true,
        'quicktags' => false,
        'media_buttons' => false
    ) );

    $editor = ob_get_contents();

    ob_end_clean();

    //make sure comment media is attached to parent post
    $editor = str_replace( 'post_id=0', 'post_id='.get_the_ID(), $editor );

    return $editor;
}

// wp_editor doesn't work when clicking reply. Here is the fix.
add_action( 'wp_enqueue_scripts', '__THEME_PREFIX__scripts' );
function __THEME_PREFIX__scripts() {
    wp_enqueue_script('jquery');
}
add_filter( 'comment_reply_link', '__THEME_PREFIX__comment_reply_link' );
function __THEME_PREFIX__comment_reply_link($link) {
    return str_replace( 'onclick=', 'data-onclick=', $link );
}
add_action( 'wp_head', '__THEME_PREFIX__wp_head' );
function __THEME_PREFIX__wp_head() {
?>
<script type="text/javascript">
    jQuery(function($){
        $('.comment-reply-link').click(function(e){
            e.preventDefault();
            var args = $(this).data('onclick');
            args = args.replace(/.*\(|\)/gi, '').replace(/\"|\s+/g, '');
            args = args.split(',');
            tinymce.EditorManager.execCommand('mceRemoveControl', true, 'comment');
            addComment.moveForm.apply( addComment, args );
            tinymce.EditorManager.execCommand('mceAddControl', true, 'comment');
        });
    });
</script>
<?php } ?>

Via | Translations: English

Portræt af Morten Bech

Morten Bech

Frontend udvikler og designer med hang til bibliotekarisk orden. Klatmaler med trang til kunstnerisk kaos. Mere om mig.

Lyt videre

Relaterede indlæg

🕺 Anserinus tendinit

Anserinus tendinit er en senebetændelse, man kan få i knæet. Især, hvis man er sidst i 40’erne og forsøger at straffe et dansegulv. Det lærte jeg i fredags, da det stak helt af på en bytur med en flok fædre fra sønnikes…

📼 Videofilm – en anekdote fra 90’erne

Engang var Blockbuster en fysisk butik, hvor man kunne leje video på bånd. Når man blev oprettet som kunde, fik man et plastickort, som man skulle fremvise sammen med et mundtligt kodeord, der skulle fremsiges, når man…

Første indlæg via Mastodon

Hej Verden! Her er en test. Første pip fra min WordPress blog #bechsterdk

Simple Analytics