我正在尝试基于基本Page模板创建一个新的页面模板Custom Page。
我想在我的自定义页面模板中做的是创建一些 HTML,定义将其添加到基本页面模板的位置,然后只包含基本页面模板。
我不想做的是将页面模板的内容复制并粘贴到我的自定义页面模板中,然后对其进行修改。为什么?因为它有助于可维护性 - 我希望将来能够修改基本页面模板,并且任何更改也自动应用于我的自定义页面模板。
这是我到目前为止在我的自定义页面模板中获得的示例:
<?php
/* Template Name: Custom Page */
// this template is based on the page template, with some additional content.
// We'll use ob_start to get the content, and assign it to the_content, by wrapping it in a function, then include the page template
function customPageExtraContent($content){
ob_start();
?>
<!-- Custom content goes here -->
<div>
<form>
<label for="exampleInput">Example Input</label>
<input type="text" name="exampleInput "id="exampleInput">
</form>
</div>
<!-- Custom content ends here -->
<?php
// collect the html
$html = ob_get_clean();
$content .= $html;
return $content;
}
// add the html to the_content
add_filter( 'the_content', 'customPageExtraContent', 20); // 20 priority runs after other filters so the content is appended.
// include page
get_template_part('page');
?>
这有效,并将上面的 html 添加到 the_content 中。
我想知道的是:
- 这实际上是实现我想要做的事情的好方法吗?
- 如果是这样,是否有抽象 customPageExtraContent 函数的方法,所以我可以在多个自定义页面模板中使用它
目前,如果我创建另一个页面模板,我将不得不为该模板定义一个新函数,例如
function customPageExtraContent2($content){
...
}
我想做的是有一个通用函数,我将额外的 html 传递给这个特定的模板。
所以我可以在我的函数文件中有一个函数,比如
function customPageExtraContent($content, $extraHTML){
return $content.$extraHTML;
}
然后在我的任何自定义模板中,我都可以调用这个函数。
我这样做有什么问题吗?我不知道如何将参数传递给我的回调函数...例如,我希望能够在我的自定义模板中执行此操作
add_filter('the_content', customPageExtraContent($content, $extraHTML), 20);
任何知道我在喋喋不休的人提供任何建议吗?
感谢:D