it-swarm.com.de

onClick inside post_content wird im Post-Tinymce-Editor nicht angezeigt

Ich mache eine Migration. Ich habe ein PHP Skript erstellt, um Beiträge in der neuen WordPress Datenbank zu generieren. Der Beitragsinhalt enthält einen HTML-Link mit href="javascript:" und onClick="trackOutboundLink('url')".

post_content in der neuen Datenbank

<div>
  <a class="exclusive button-exclusive" href="javascript:" onclick="trackOutboundLink('url'); return false;" rel="nofollow"><span>&#9655; Text link</span></a>
</div>

Aus irgendeinem Grund wurden die Attribute href und onclick im Administratorbeitragseditor nicht angezeigt. Warum? Wie kann ich das beheben?

1
J.BizMai

Standardmäßig setzt TinyMCE allow_script_urls auf false, wodurch das Attribut href und der Wert im Link entfernt werden.

Ebenfalls im Interesse der Best Practices erlaubt TinyMCE das Attribut onlcick für Links nicht standardmäßig. Dies kann auch geändert werden.

Der Hook tiny_mce_before_init kann verwendet werden, um die Optionen von TinyMCE so zu ändern, dass dieser Inhalt nicht entfernt wird:

/**
 * Filters the TinyMCE config before init.
 *
 * @param array  $mceInit   An array with TinyMCE config.
 * @param string $editor_id Unique editor identifier, e.g. 'content'.
 */
add_filter( 'tiny_mce_before_init', 'wpse_tiny_mce_before_init', 10, 2 );
function wpse_tiny_mce_before_init( $mceInit, $editor_id ) {
    // Allow javascript: in href attributes.
    $mceInit['allow_script_urls'] = true;

    // Allow onclick attribute in anchor tags.
  if ( ! isset( $mceInit['extended_valid_elements'] ) ) {
        $mceInit['extended_valid_elements'] = '';
    } else {
        $mceInit['extended_valid_elements'] .= ',';
    }
    $mceInit['extended_valid_elements'] .= 'a[href|rel|class|id|style|onclick]';

    return $mceInit;
}
2
Dave Romsey