我正在尝试基于基本的 Page 模板创建新的页面模板自定义页面。
我想在自定义页面模板中执行的操作是创建一些HTML,定义将其添加到基本 Page 模板的位置,然后只包括基本 Page 模板。
我 想要做的是将 Page 模板的内容复制并粘贴到我的自定义页面模板中,然后只是修改它。为什么?因为它有助于维护 - 我希望将来能够修改基本的 Page 模板,并且任何更改都会自动应用于我的自定义页面模板。< / p>
以下是我在自定义页面模板中到目前为止的示例:
<?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。
我想知道的是:
目前,如果我创建另一个页面模板,我将不得不为那个模板定义一个新函数,例如
function customPageExtraContent2($content){
...
}
我想要做的是有一个通用函数,我将额外的html传递给这个特定的模板。
所以我可以在我的函数文件中有一个像
这样的函数function customPageExtraContent($content, $extraHTML){
return $content.$extraHTML;
}
然后在我的任何自定义模板中,我都可以调用此函数。
我这样做的问题?我无法弄清楚如何将参数传递给我的回调函数...例如,我希望能够在我的自定义模板中执行此操作
add_filter('the_content', customPageExtraContent($content, $extraHTML), 20);
任何知道我在喋喋不休的人都会提出任何建议吗?
谢谢:D
答案 0 :(得分:0)
如果您想要调用当前页面模板,请不要创建页面模板 - 您必须设置要调用的模板。使用template parts
创建模板的一部分 - 然后在if/while
语句下调用它。
来源: https://developer.wordpress.org/reference/functions/get_template_part/