Já precisou criar um endereço personalizado para exibir alguma informação gerada pelo seu plugin WordPress? Algo como dominio.com/meu-plugin? Neste vídeo explico sobre a API Rewrite. Com ela você pode criar novas regras de endereços no WP, com parâmetros adicionais e tudo o mais.

Ele também tem uma explicação sobre como criar um novo arquivo no seu tema e associar com este endereço usando o filtro template_include e como sempre redirecionar os usuários para a URL amigável com a action template_redirect.

O código final e completo do plugin é esse aqui:

<?php
/**
 * Plugin Name: Plugin com URL
 */

defined( 'ABSPATH' ) || exit;

function url_plugin_template_include( $template ) {
	if ( get_query_var( 'meu_plugin' ) ) {
		$template_name = 'template-meu-plugin.php';

		$template = locate_template( $template_name );
		if ( '' === $template ) {
			$template = __DIR__ . '/' . $template_name;
		}
	}
	return $template;
}
add_filter( 'template_include', 'url_plugin_template_include' );

function url_plugin_init() {
	add_rewrite_rule(
		'meu-plugin/([^/]*)/([^/]*)/?',
		'index.php?meu_plugin=1&meu_plugin_info_1=$matches[1]&meu_plugin_info_2=$matches[2]',
		'top'
	);
}
add_action( 'init', 'url_plugin_init' );

function url_plugin_query_vars( $query_vars ) {
	$query_vars[] = 'meu_plugin';
	$query_vars[] = 'meu_plugin_info_1';
	$query_vars[] = 'meu_plugin_info_2';
	return $query_vars;
}
add_filter( 'query_vars', 'url_plugin_query_vars' );

function url_plugin_template_redirect() {
	if ( ! empty( $_GET['meu_plugin'] ) ) {
		wp_redirect( "meu-plugin/{$_GET['meu_plugin_info_1']}/{$_GET['meu_plugin_info_2']}/" );
		exit;
	}
}
add_action( 'template_redirect', 'url_plugin_template_redirect' );

Não se esqueça de curtir o vídeo e de assinar o canal!