web-dev-qa-db-ja.com

post_content内のonClickがpost Tinymceエディタに表示されない

私は移行をしています。新しいWordPressデータベースに投稿を生成するためのPHPスクリプトを作成しました。投稿コンテンツにはhref="javascript:"onClick="trackOutboundLink('url')"を含むHTMLリンクが含まれています。

新しいデータベースのpost_content

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

何らかの理由で、hrefおよびonclick属性が管理ポストエディタに表示されませんでした。どうして?どうすればこれを修正できますか?

1
J.BizMai

デフォルトでは、TinyMCEは allow_script_urlsfalseに設定します。これにより、リンク内のhref属性と値が削除されます。

またベストプラクティスのために、 TinyMCEはデフォルトでリンク上のonlcick属性を許可していません 。これも変更することができます。

tiny_mce_before_initフックを使ってTinyMCEのオプションを変更し、このコンテンツが削除されないようにすることができます。

/**
 * 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