Der Dialog HTML kommt von dort WP_Editors::wp_link_dialog()
aber keine Haken drin.
Wir könnten stattdessen jQuery verwenden , um die benutzerdefinierte HTML - Link - Dialog anzuhängen und versuchen , außer Kraft zu setzen zB die wpLink.getAttrs()
, weil es sehr kurz ist ;-)
Demo Beispiel:
jQuery( document ).ready( function( $ ) {
$('#link-options').append(
'<div>
<label><span>Link Class</span>
<select name="wpse-link-class" id="wpse_link_class">
<option value="normal">normal</option>
<option value="lightbox">lightbox</option>
</select>
</label>
</div>' );
wpLink.getAttrs = function() {
wpLink.correctURL();
return {
class: $( '#wpse_link_class' ).val(),
href: $.trim( $( '#wp-link-url' ).val() ),
target: $( '#wp-link-target' ).prop( 'checked' ) ? '_blank' : ''
};
}
});
Ich habe gerade einen Schnelltest durchgeführt und es scheint zu funktionieren, aber ich muss weitere Tests und Anpassungen vornehmen, wenn ich Links aktualisiere. Hier ist ein alter Hack , den ich gemacht habe, der eine Auffrischung braucht.
Aktualisieren
Es sieht so aus, als ob Sie das hinzufügen möchten rel="nofollow"
Option auf den Link Dialog, also lassen Sie uns Update den oben beschriebenen Ansatz für diesen Fall:
Wir fügen das rel
Link-Attribut hinzu mit:
/**
* Modify link attributes
*/
wpLink.getAttrs = function() {
wpLink.correctURL();
return {
rel: $( '#wpse-rel-no-follow' ).prop( 'checked' ) ? 'nofollow' : '',
href: $.trim( $( '#wp-link-url' ).val() ),
target: $( '#wp-link-target' ).prop( 'checked' ) ? '_blank' : ''
};
}
Wenn das rel
Attribut leer ist, wird es automatisch aus dem Link im Editor entfernt.
Dann können wir uns in das wplink-open
Ereignis einklinken, das ausgelöst wird, wenn der Linkdialog geöffnet wird. Hier können wir unser benutzerdefiniertes HTML einfügen und es entsprechend der aktuellen Linkauswahl aktualisieren:
$(document).on( 'wplink-open', function( wrap ) {
// Custom HTML added to the link dialog
if( $('#wpse-rel-no-follow').length < 1 )
$('#link-options').append( '<div> <label><span></span> <input type="checkbox" id="wpse-rel-no-follow"/> No Follow Link</label></div>');
// Get the current link selection:
var _node = wpse_getLink();
if( _node ) {
// Fetch the rel attribute
var _rel = $( _node ).attr( 'rel' );
// Update the checkbox
$('#wpse-rel-no-follow').prop( 'checked', 'nofollow' === _rel );
}
});
wo wir die folgende Hilfsfunktion, basierend auf der Verwendung getLink()
Kernfunktion, den HTML - Code des ausgewählten Link zu erhalten:
function wpse_getLink() {
var _ed = window.tinymce.get( window.wpActiveEditor );
if ( _ed && ! _ed.isHidden() ) {
return _ed.dom.getParent( _ed.selection.getNode(), 'a[href]' );
}
return null;
}
Hier ist die Ausgabe:
mit folgendem HTML:
ps: Dies könnte weiter getestet und auch erweitert werden, um Übersetzungen zu unterstützen