WordPress插件专页

My plugin makes an interactive image and I want to share it via iframe. Is there a right way to implement a special page with unique url for a wordpress plugin. At the moment I use a page templates, but it's not so friendly. I want something like www.site.com/myplugin/id=123&param=123 - shows me a special page that renders my plugin in frontend.

You can hook into the parse_request action before WordPress renders any page like so:

function so_46014733( $query ) {
    if (
        isset( $_GET['id'] )
        && isset( $_GET['param'] ) &&
        '123' === $_GET['id'] &&
        '123' === $_GET['param']
    ) {
        include_once 'my_custom_page.html';
        exit;
    }
    return $query;
}
add_action( 'parse_request', 'so_46014733' );

A few things to note:

  • This will immediately return the default $query if the id or param are empty (almost no performance impact on this check).
  • This assumes you want to render your own HTML page (or even a PHP page with your own code) if the id and param match your keys.
  • If you plan to use the $_GET variables for anything, be sure to sanitize them first like so:

    $id = absint( wp_unslash( $_GET['id'] ) );