在不丢失页面关联的情况下将主题模板移动到子文件夹

时间:2015-01-29 作者:josh

我知道,从3.4开始,模板可以驻留在主题的子文件夹中。

我的主题已经有一段时间了,我们所有的模板都位于主题目录中。我想通过将它们添加到子文件夹来整理这些内容,但简单地移动它们将导致所有页面丢失其模板。这将是一个痛苦的纠正为40模板页左右。。。

是否有wordpress过滤器、挂钩或其他方法可用于检查模板位置?我可以使用哪个来检查缺少的模板?谷歌没有发现任何有用的东西。

有人有其他基于wordpress的想法吗?

(我知道我可以尝试运行查询来更新模板位置,但如果可以避免的话,我宁愿不直接修改DB。)

谢谢

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

你可以把page_template 筛选并检查当前页面是否有_wp_page_template 元键。如果有,您可以检查file_exists 在新模板位置,然后update_post_meta 附加新目录名。

SO网友:highvolt

您可以做的一件事是利用模板层次结构、wordpress条件标记函数和模板部分。

使用index.php 具有conditional checks 喜欢is_archive(), is_page(), is_single(), 等。然后在每个块下,加载template part.

E、 g。

if ( is_archive() ) {
  if ( is_tag() ) {
    get_template_part( \'archives/\', \'tag\' );
  } elseif ( is_category() ) {
    get_template_part( \'archives/\', \'category\' );
  }
}
get_template_part (如上链接)允许您从子目录加载。如果包含尾部斜杠,可以使用第一个参数包含子目录,第二个参数使用php文件的基名称。这样做的好处是,子主题可以使用相同的子文件夹和文件名覆盖模板部件。

继续使用其他有文档记录的条件标记函数,然后可以加载所需的任何模板。此外,您还可以根据需要重用模板零件。

结束

相关推荐

1 post, 2 templates

我想能够呈现两种不同的风格(2个模板)后。例如,假设我有post ID 133,我希望有两个url来访问它,因此它会呈现不同模板应用的位置。洛雷姆。com/render1/133。com/render2/1333,例如。。。或者可能是这样的:洛雷姆。com/post/133和lorem。com/post/133?模板=2您将如何操作?