Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从插件从数据库动态生成测验内容_Php_Wordpress_Plugins - Fatal编程技术网

Php 从插件从数据库动态生成测验内容

Php 从插件从数据库动态生成测验内容,php,wordpress,plugins,Php,Wordpress,Plugins,我的客户是一位大学教授,他想在Wordpress支持的网站上为他的学生添加在线测验。因此,我正在构建一个自定义插件,允许他或任何管理员从管理员页面进行这些测试。所有这些信息都保存在mysql数据库中自己的表中,这里没有问题。当我向学生/博客的普通用户展示测验时,我迷路了 我想要的是一种生成这些测验的方法。起初,我认为学生想要做的带有测验ID的$u GET参数会起到作用,但接下来,它会去哪里呢?我应该在wordpress的主目录中使用一个单独的php文件吗?这样做行吗 我是否应该创建一个常规的旧帖

我的客户是一位大学教授,他想在Wordpress支持的网站上为他的学生添加在线测验。因此,我正在构建一个自定义插件,允许他或任何管理员从管理员页面进行这些测试。所有这些信息都保存在mysql数据库中自己的表中,这里没有问题。当我向学生/博客的普通用户展示测验时,我迷路了

我想要的是一种生成这些测验的方法。起初,我认为学生想要做的带有测验ID的$u GET参数会起到作用,但接下来,它会去哪里呢?我应该在wordpress的主目录中使用一个单独的php文件吗?这样做行吗

我是否应该创建一个常规的旧帖子并在代码上加上短代码?我应该使用自定义帖子类型吗?但请记住,测验已经在数据库中创建,我觉得为每个测验制作一篇帖子,自定义或常规,似乎过于复杂。你甚至可以使wordpress页面动态化并传递一个参数吗


或者有没有一种方法可以使用钩子重写主页面来显示我的代码,而不是循环或任何其他地方?或者我离得太远了,还有其他方法吗?

你可以像使用自定义模板一样简单地完成。例如,创建一个名为quick的页面和一个名为quick.php的自定义模板。在该模板中,您只需在查询字符串中查找测验id,然后显示它:

if($_GET['quiz_id']){
/** code to retrieve and output the quiz */
}
else{
/** code for them to select a quiz */
}
这就是赤裸裸的方法。要以更流畅的方式完成,您可以使用类似于重写端点API的东西

这方面的一个例子是:

/** 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']);

  }

}

听起来你好像没有做这件事的知识。还有,你想做什么?从数据库中选择并显示它?我不能反驳第一个参数,因为我只是在学习API是如何工作的。只是我读到的东西似乎对我需要完成的事情没有特别的帮助。或者至少不用做很多调整。这不仅仅是选择和显示,我知道怎么做。学生应该能够解决测验,插件应该计算笔记/分数。但首先我必须完成这部分,这就是我寻求帮助的地方。我需要弄清楚在哪里以及如何显示这些测验。你需要从数据库中选择一些内容并显示出来,对吗?对不起,我太早按了enter键。但正如我上面所说的,这不是我必须做的全部,也不是我被困的地方,但在我知道去哪里之前,我无法完成插件和测验的其他后期处理。。。我想附上我的代码吧?帖子,自定义帖子,钩子,一个普通的php文件。我只是不确定,我真的需要学习我应该学习的任务。唉,我很抱歉听起来这么含糊,但我完全迷路了。嗨,克里斯,欢迎你。在这里我们讨论代码,您的问题应该集中在您正在开发而不工作的特定块上。这本指南对学习如何问答和提问很有帮助。我想用重力形式或类似的方法,你会做得更快。如果他不懂PHP,我看他不太懂函数。。。但是,嘿,为什么不…@wunderdojo非常感谢你!这就是我需要的。我已经设法用一个端点解决了这个需求,它工作得很好。@taotrooper-太棒了,很高兴听到它为你工作了!