您可以像使用自定义模板一样简单地做到这一点。例如,制作一个名为“Quiz”的页面和一个名为 quiz.php 的自定义模板。在该模板中,您可以简单地在查询字符串中查找测验 ID,然后显示它:
if($_GET['quiz_id']){
/** code to retrieve and output the quiz */
}
else{
/** code for them to select a quiz */
}
这就是赤裸裸的方法。要以更巧妙的方式执行此操作,您可能会使用类似重写端点 API ( http://codex.wordpress.org/Rewrite_API/add_rewrite_endpoint )
一个例子是:
/** add a custom function to the init hook */
add_action('init', 'my_custom_endpoint');
/** custom endpoint for handling forms */
function my_custom_endpoint(){
add_rewrite_endpoint('forms', EP_ALL);
/** when pages are loaded, check to see if it's a form page and do something */
add_action( 'template_redirect', 'process_form' );
}
EP_ALL 是端点掩码——它告诉 WordPress 在哪里应用新端点。您可以将其仅应用于页面,仅应用于帖子等。在这种情况下,您将在任何地方添加端点。
然后你有一个实际处理端点的函数:
function process_form(){
global $wp_query;
/** check for your endpoint. A URL like site.com/forms/12 would set forms = 12 */
if(isset($wp_query->query_vars['forms'])){
/** the query var forms has a value, do something to show the form */
echo get_form($wp_query->query_vars['forms']);
}
}