November 14, 2016 · WordPress Web

Call a function when user access the specific URL structure in WordPress

add_action( 'template_redirect', 'my_plugin_template_redirect_intercept' );
function my_plugin_template_redirect_intercept() {
 global $wp_query;
 if( $wp_query->get('my-plugin') ) {
  $someVar = $wp_query->get('some-var');
  // do stuff
  exit;
 }
}

function my_plugin_add_rewrite_rules() {
 $rule = '^/blog/example/some-var/([0-9]+)/?$';
 add_rewrite_rule(
  $rule,
  'index.php?my-plugin=1&some-var=$matches[1]',
  'top' );
}

add_action( 'init', 'my_plugin_rewrites_init' );
function my_plugin_rewrites_init() {
 add_rewrite_tag( '%my-plugin%', '([0-9]+)' );
 add_rewrite_tag( '%post-id%', '([0-9]+)' );
 my_plugin_add_rewrite_rules();
}

register_activation_hook( __FILE__, 'my_plugin_activate' );
function my_plugin_activate() {
 global $wp_rewrite;
 my_plugin_add_rewrite_rules();
 $wp_rewrite->flush_rules();
}

http://www.mendoweb.be/blog/wordpress-custom-rewrite-url-to-call-plugin-function/