Categorizing Page Templates

时间:2016-05-22 作者:Jesse Winton

我想知道是否有可能对页面模板进行分类并按类别显示在下拉列表中。换句话说,将页面模板定义为用于显示的父页面的模板,以及用于执行相同操作的子页面的某种标题和页面模板。

大多数情况下,我只是想知道是否有一种方法可以在下拉列表中组织页面模板。

谢谢

1 个回复
SO网友:Tim Malone

问得好。据我所知,没有办法筛选此列表(有long trac ticket 如果你感兴趣的话,关于一个提案,以及这个网站上的相关(但不同)问题herehere).

因为没有过滤器,所以您可能不得不求助于使用jQuery。

我们可以使用admin_print_footer_scripts 措施:

add_action("admin_print_footer_scripts", "wpse_227485_categorise_page_templates");

function wpse_227486_categorise_page_templates(){
  ?>
  <script>
    // run scripts here
  </script>
  <?php
}
然后我们需要弄清楚的是如何访问模板并对其进行分类。

查看post editor页面的源代码,模板位于#pageparentdiv 在a中select 调用的元素#page_template. 因此,我们可以访问以下选项:

jQuery("#pageparentdiv #page_template option")
使用此功能,您可以通过在您知道要对模板进行分类的项目上方添加其他空白、禁用的选项,以自定义的方式对模板进行有效的“分类”,例如:

jQuery("#pageparentdiv #page_template option[value=\'my-template.php\']")
  .before("<option disabled=\'disabled\'>My Template Heading</option>");
将上述代码块替换标记的部分// run scripts here 在上面的第一个块中,将添加“My Template Heading”(我的模板标题),作为上面模板“My Template”(我的模板)所在位置的不可选择选项。php’在列表中。

当然,在需要的地方添加尽可能多的这些内容:)

重要的是要注意,这不会以任何方式成为动态的,但可以根据您想要的内容进行编码。Wordpress中没有内置的方法将模板定义为用于父页面/子页面等,但如果需要动态的模板,理论上可以通过不同的方式来实现,例如在模板文件的顶部添加一个自定义变量,然后在生成此脚本之前读取它们。