0

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

我想知道的是:

  1. 这实际上是实现我想要做的事情的好方法吗?
  2. 如果是这样,是否有抽象 customPageExtraContent 函数的方法,所以我可以在多个自定义页面模板中使用它

目前,如果我创建另一个页面模板,我将不得不为该模板定义一个新函数,例如

function customPageExtraContent2($content){
    ...
}

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

所以我可以在我的函数文件中有一个函数,比如

function customPageExtraContent($content, $extraHTML){
    return $content.$extraHTML;
}

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

我这样做有什么问题吗?我不知道如何将参数传递给我的回调函数...例如,我希望能够在我的自定义模板中执行此操作

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

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

感谢:D

4

1 回答 1

0

如果您希望调用当前页面模板,请不要创建页面模板 - 您必须设置要调用的模板。用于template parts创建模板的一部分——然后在if/while声明下调用它。

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

于 2016-02-23T11:15:46.983 回答