php - WordPress hook / filter to process link inside a post -
is there hook / filter process link being added wordpress post ?
my aim pre-process link inserted in post using following button , shorten using third party api bit.ly
i want both internal / external links.
one solution think of add button editor prefer hook / filter job, way more clean , convert custom plugin website (there allowing wordpress up-gradable).
i went through wordpress docs , skimmed through following hooks / filters of no use me
update 1: far know, external urls inserted post content tinymce editor link plugin, php nothing.
in wordpress, there're 2 plugins located @ wp-includes/js/wplink.js
, wp-includes/js/tinymce/plugins/wplink/plugin.js
. note if you're not in script_debug
mode, have .min
suffix.
wp-includes/js/wplink.js handles dialog:
to filter urls inserted via dialog box, must override wplink.getattrs
method. example, add so39115564
string every urls:
jquery(document).ready(function($) { wplink.getattrs = function() { wplink.correcturl(); return { href: $.trim( $("#wp-link-url").val() + "so39115564" ), target: $("#wp-link-target").prop("checked") ? "_blank" : "" }; } });
you should take @ wp-includes/js/wplink.js
more info. it's long explain in detail here.
and let above script mylink.js
, here how should enqueue it:
add_filter('admin_enqueue_scripts', function() { // { maybe conditions valid screen here. } wp_enqueue_script('mylink', 'link/to/the/mylink.js', ['link'], '1.0', true); }, 0, 0);
wp-includes/js/tinymce/plugins/wplink/plugin.js handles dialog:
this time, have override seturl
method of tinymce.ui.wplinkpreview
. but, it's almost impossible, unless deregister script , register modified version. manage script unpredictable changes wordpress.
now, choose wisely! shorten external urls before pasting them posts or mess wordpress tinymce plugins or use dialog box of wp-includes/js/wplink.js
plugin.
yes! wordpress inserts inline links via wp_link_ajax
action executed wp_ajax_wp_link_ajax() function.
as can see in source code of function, $results
retrieved _wp_editors::wp_link_query
. check out method, meet wp_link_query filter. filter accept 2 arguments: $results
, $query
. $results
need filter.
for example, need append so39115564
queried link:
add_filter('wp_link_query', function(array $results, array $query) { $results[0]['permalink'] = $results[0]['permalink'] . 'so39115564'; return $results; }, php_int_max, 2);
now, should know how it. make sure take @ _wp_editors::wp_link_query filter $results
more efficient.
Comments
Post a Comment