我刚刚开始学习wordpress插件并制作一个简单的插件。我陷入了我现在购买按钮的过程中,我想如果我点击该按钮它将在内容区域显示我的自定义表单。我做了以下代码
<a href="?hotel_booknow=2" class="btn btn-primary" id="create-user">Buy Now</a>
我希望它会调用包含我的自定义文件的下面的函数
function jdbs_init(){
if(isset($_GET['hotel_booknow']))
{
$content = include dirname( __FILE__ ) . '/jdbs.php';
//require ('jdbs.php');
return $content;
}
}
add_action('init','jdbs_init');
如果我点击该网址,则会包含jdbs.php文件,但它出现在页面顶部,标题和显示主页上方。我想在主要或内容部分显示它。 我试图在谷歌搜索但没有帮助。
jdbs.php:
<form class="form-horizontal" role="form">
<div class="form-group">
<label class="control-label col-sm-2" for="email">Email:</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="email" placeholder="Enter email">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="pwd">Password:</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="pwd" placeholder="Enter password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label><input type="checkbox"> Remember me</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default">Submit</button>
</div>
</div>
</form>
就像在joomla中一样,我们正在制作一个控制器和视图,以便在wordpress中创建如何为同一个插件制作多个页面或视图的页面?
答案 0 :(得分:1)
在发送标头之前调用init挂钩,因此包含的文件位于标头之上是有意义的。 见https://codex.wordpress.org/Plugin_API/Action_Reference/init
正确的方法是告诉Wordpress使用不同的模板文件:
add_filter( 'template_include', 'my_change_template' );
function my_change_template( $original_template ) {
if (isset($_GET['hotel_booknow'])) {
return 'jdbs.php';
} else {
return $original_template;
}
}
这样它将使用jdbs.php来呈现页面。但是你需要将页眉/页脚部分放在表单周围(例如,你可以从page.php复制/粘贴它们)。