隐藏页面模板,而不使用‘unset’

时间:2018-05-04 作者:Matthew Jasek

我有一些不常用的自定义页面模板。如何在“页面属性>模板”下拉列表中隐藏这些模板?

取消设置不是一个选项,因为使用取消设置模板对任何页面的修改都将恢复为默认模板。

有没有办法“隐藏”而不是禁用特定模板?

编辑:看起来即使使用js隐藏选择,您仍然会遇到恢复为默认模板的相同问题。

2 个回复
SO网友:Matthew Jasek

要回答我自己的问题,我认为唯一的解决方案是隐藏页面模板选择器,并构建我自己的,只显示我希望添加的模板。

SO网友:cjbj

可用模板列表由生成get_page_templates. 此函数结束时,您将看到一个允许您修改输出的过滤器。您可以在以下特定条件下使用该选项进行更改:

add_filter (\'theme_page_templates\',\'wpse302662_hide_templates\', 10, 4);

function wpse302662_hide_templates ($post_templates, $this, $post, $post_type) {
  $templates_to_hide = array (\'template-1\', \'template-2\');
  $current_template = get_page_template_slug ($post->ID);
  if (!in_array ($current_template, $templates_to_hide) {
    // remove unwanted templates from $post_templates
    }
  return $post_templates;
  }
Edited code 下面是Jacob的建议。条件和删除操作中的一些额外逻辑可能是必要的,以准确反映何时要隐藏哪些模板。

结束

相关推荐

Read_Private_Pages功能不适用于新角色

我已经创建了一个新的用户角色-供应商-能够read_private_pages, 但当我以这样的用户身份登录并转到一个私人页面时,我看不到它。以下是我的插件代码:function fc_add_role($role, $display_name, $capabilities = array()) { if (!empty($role)) { return wp_roles()->add_role( $role, $display_name, $capabili