Je fais une migration. J'ai créé un script PHP pour générer des publications dans la nouvelle base de données WordPress. Le contenu de la publication contient un lien HTML contenant href="javascript:"
et onClick="trackOutboundLink('url')"
.
post_content dans la nouvelle base de données
<div>
<a class="exclusive button-exclusive" href="javascript:" onclick="trackOutboundLink('url'); return false;" rel="nofollow"><span>▷ Text link</span></a>
</div>
Pour une raison quelconque, les attributs href
et onclick
ne figuraient pas dans l'éditeur de publication d'administrateur. Pourquoi? Comment puis-je réparer cela?
Par défaut, TinyMCE définit allow_script_urls
sur false
, ce qui entraîne la suppression de l'attribut href
et de la valeur du lien.
Toujours dans l'intérêt des meilleures pratiques, TinyMCE n'autorise pas l'attribut onlcick
sur les liens par défaut. Cela peut être changé aussi.
Le hook tiny_mce_before_init
peut être utilisé pour modifier les options de TinyMCE afin que ce contenu ne soit pas supprimé:
/**
* 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;
}