基于另一个(父)模板创建Wordpress模板

时间:2016-02-23 11:09:02

标签: wordpress wordpress-theming custom-wordpress-pages

我正在尝试基于基本的 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。

我想知道的是:

  1. 这实际上是实现我想要做的事情的好方法吗?
  2. 如果有,有没有办法抽象出customPageExtraContent函数,所以我可以在多个自定义页面模板中使用它
  3. 目前,如果我创建另一个页面模板,我将不得不为那个模板定义一个新函数,例如

    function customPageExtraContent2($content){
        ...
    }
    

    我想要做的是有一个通用函数,我将额外的html传递给这个特定的模板。

    所以我可以在我的函数文件中有一个像

    这样的函数
    function customPageExtraContent($content, $extraHTML){
        return $content.$extraHTML;
    }
    

    然后在我的任何自定义模板中,我都可以调用此函数。

    我这样做的问题?我无法弄清楚如何将参数传递给我的回调函数...例如,我希望能够在我的自定义模板中执行此操作

    add_filter('the_content', customPageExtraContent($content, $extraHTML), 20);
    

    任何知道我在喋喋不休的人都会提出任何建议吗?

    谢谢:D

1 个答案:

答案 0 :(得分:0)

如果您想要调用当前页面模板,请不要创建页面模板 - 您必须设置要调用的模板。使用template parts创建模板的一部分 - 然后在if/while语句下调用它。

来源: https://developer.wordpress.org/reference/functions/get_template_part/