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 bech

bech

Morten Brunbjerg Bech er frontend udvikler & designer hos TV MIDTVEST, bibliotekar og fritids-illustrator. Mere om mig.

Lyt videre

Relaterede indlæg

Mastodon-kommentarer i Publii

Publii er en static site generator. Det vil sige, at systemet genererer statiske, flade HTML filer, der i udgangspunktet giver begrænset mulighed for interaktion. Der er nemlig ingen server-side scripts, der kan tage…

Fra WordPress til Publii

Bye bye WordPress: 43,5%. Så stor en andel af alle websites kører med WordPress under motorhjelmen ifølge Kinsta. Platformen er massivt populær. Men WordPress styrer for tiden i retning af det, tech-skribent og…

🕺 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…