HTML से संवाद आता है WP_Editors::wp_link_dialog()
लेकिन इसमें कोई हुक नहीं है।
इसके बजाय हम कस्टम डायलॉग को लिंक डायलॉग में जोड़ने के लिए jQuery का उपयोग कर सकते हैं और उदा wpLink.getAttrs()
इसे , क्योंकि यह बहुत छोटा है;;
डेमो उदाहरण:
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' : ''
};
}
});
मैंने बस एक त्वरित परीक्षण किया और यह काम करने लगता है लेकिन लिंक को अपडेट करते समय आगे के परीक्षण और समायोजन की आवश्यकता होती है। यहाँ एक पुरानी हैक है जो मैंने किया था जिसे एक रिफ्रेश की आवश्यकता हो सकती है।
अपडेट करें
ऐसा लगता है कि आप जोड़ना चाहते हैं rel="nofollow"
लिंक डायलॉग विकल्प , तो चलिए उस स्थिति के लिए उपरोक्त दृष्टिकोण को अपडेट करें:
हम इसके rel
साथ लिंक विशेषता जोड़ते हैं :
/**
* 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' : ''
};
}
यदि rel
विशेषता खाली है, तो यह संपादक में लिंक से स्वचालित रूप से हटा दिया जाएगा।
फिर हम उस wplink-open
घटना को हुक कर सकते हैं जो लिंक डायलॉग को खोलने पर आग लगाती है। यहां हम अपने कस्टम HTML को इंजेक्ट कर सकते हैं और इसे वर्तमान लिंक चयन के अनुसार अपडेट कर सकते हैं:
$(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 );
}
});
getLink()
चयनित लिंक का HTML प्राप्त करने के लिए हम कोर फ़ंक्शन के आधार पर निम्न सहायक फ़ंक्शन का उपयोग करते हैं :
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;
}
यहाँ उत्पादन है:
निम्नलिखित HTML के साथ:
ps: इसका आगे परीक्षण किया जा सकता है और अनुवादों के समर्थन के लिए भी बढ़ाया जा सकता है