Knowing that wordpress doesn’t follow MVC pattern.
What is the best way in worpress to output plugin’s result in a certain url.
lets say I would like to show “hello world” in main area under “www.example.com/show-hello-world” url.
thanks. hope question is clear!
more details:
Let’s say url “example.com/show-hello-world”
- how could I specify template name, let’s say “page” ?
2 Answers
There are two steps:
function my_plugin_rewrite_rule() {
global $wp;
$wp->add_query_var( 'show_hello_world' );
add_rewrite_rule( 'show-hello-world/?$', 'index.php?show_hello_world=1', 'top' );
}
add_action( 'init', 'my_plugin_rewrite_rule' );
That takes care of rewriting. Remember to flush the rewrite rules.
Now, your plugin can check for get_query_var( 'show_hello_world' );
and load a certain file:
function my_plugin_template( $path ) {
if ( get_query_var( 'show_hello_world' ) )
return locate_template( 'my-plugin.php' );
else
return $path;
}
add_filter( 'template_include', 'my_plugin_template' );