使用插件覆盖GET_TEMPLATE_PART(‘Partials/POST’,‘Sidear’);

时间:2016-05-31 作者:WilliamAlexander

我正在为一个客户开发一个网站,该客户有一个由不同开发人员为其构建的主题。他们要求我对网站做一些更改,我想把我所有的更改都放到一个插件中,作为对原始主题开发人员的礼貌。到目前为止,函数和CSS都很简单。现在我需要更改一个主题文件。从本质上讲,我想用一个经过大量编辑的不同主题文件来替换一个主题文件。

在主题中,我要替换的文件调用为:

get_template_part( \'partials/post\', \'sidebar\' );
我想做的是在我的插件中编写一个函数来捕获上述语句,并将模板请求重定向到位于插件目录中的文件。

我完全不知道如何做到这一点,搜索到目前为止几乎没有任何帮助。这可能吗?

2 个回复
最合适的回答,由SO网友:Tim Malone 整理而成

TL;DR: 使用child theme 而是:)

如果我们深入研究code for get_template_part(), 那里有一个行动-get_template_part_{$slug} - 我们可以把它钩住。

进一步挖掘,get\\u template\\u part()调用locate_template(), 哪个呼叫load_template(). 不幸的是,这两个函数中似乎都没有什么是可插入的,因此我们无法挂接和更改任何内容(除了能够通过调用load\\u template()中的extract()来设置变量……)。。。。但我们无法覆盖正在调用的模板文件,因此它无论如何都不是很有用!)

因此,您似乎只有在get_template_part_partials/post 行动问题是,这不允许您过滤调用的模板-它只允许您在调用模板时运行一些代码。如果您只想在模板代码上方添加一些输出,那么这将非常适合您,但我怀疑这就是您想要做的!

解决这一切的办法是use a child theme.

你说过你想把你的代码放进一个插件,以尊重原来的主题开发者。首先,这种尊重是令人敬畏的——许多开发人员对此毫不在意,所以我推荐您!

然而,插件是最好的选择吗?插件通常用于向站点添加模块化功能,而不是改变其外观和感觉。这是主题的领域。

事实上你可以create a child theme 这将允许您修改站点使用的主题,而无需对父主题进行任何更改。您应该能够应用您在此处所做的所有更改,另外还有一个好处,即在返回到父主题之前,get\\u template\\u part()将自动使用子主题中的文件(如果存在)。

SO网友:yousaf

首先,您可以找到部分侧栏的目录。php目录。找到时,请获取\\u template\\u directory\\u uri()。然后“../”这意味着如果你的部分侧边栏有一个文件夹。php是插件的备份文件夹,然后用作“../Get\\u template\\u directory\\u uri()/wp content/”等

相关推荐

About wordpress child themes

我对WordPress和儿童主题有一些问题。据我所知,如果我不想在更新主题时失去任何东西,使用子主题是很重要的。我是WordPress的初学者,到目前为止,我一直在使用PageBuilder(管理面板上的板载自定义选项)自定义我的网站,并在“附加CSS”选项中加入几行CSS。所有这些都是在主主题上完成的(只是玩转尝试学习),现在我想开始使用一个儿童主题。问题如下:我不知道我是否可以像通过管理界面设计父主题那样设计我的子主题,或者我是否必须通过文本编辑器(在我的计算机上,然后通过FTP等方式上传)对所有内容