Как скрыть шаблон в Wordpress? [закрытый]
Есть ли способ скрыть файл шаблона в admin?
Например, у меня есть шаблон, который должен быть доступен только в том случае, если установлен определенный плагин, и я уже знаю, как проверить, активен ли плагин. Но как скрыть шаблон?
Например, я хочу скрыть "перенаправление блоггера" - шаблон ниже:
Я нашел несколько ссылок, но все решения кажутся устаревшими.Править: если кому-то интересно, как я проверяю если pluin активен, я делаю это со следующей функцией:
function isPluginActive($plugin){
if ( in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) )
{
return true;
}
return false;
}
2 ответа:
Обновление-слово предостережения, как указано Эндрю в комментариях ниже:
Используйте этот код с осторожностью, Если у вас есть страницы, использующие шаблон, который вы удалили из select, обновление страницы приведет к возврату к шаблону по умолчанию
Я не уверен, есть ли способ PHP для этого - вам придется искать в классе
WP_Theme
, но с первого взгляда это может быть невозможно, потому что для того, чтобы получить все шаблоны, класс использует внутреннюю функцию под названиемscandir()
который сканирует текущий каталог тем и получает оттуда все файлы.php
. Затем он ищет соответствующий идентификаторTemplate Name:
, и если он присутствует, он добавляется в список шаблонов.Поэтому вместо этого я предлагаю, чтобы вы добавили немного JS, который удалит эту опцию из шаблона страницы select. Вот фрагмент кода:
function my_remove_page_template() { global $pagenow; if ( in_array( $pagenow, array( 'post-new.php', 'post.php') ) && get_post_type() == 'page' ) { ?> <script type="text/javascript"> (function($){ $(document).ready(function(){ $('#page_template option[value="sidebar-page.php"]').remove(); }) })(jQuery) </script> <?php } } add_action('admin_footer', 'my_remove_page_template', 10);
Это приведет к удалению шаблона
sidebar-page.php
из выпадающего списка. Условные обозначения таковы, что сценарий добавляется только на экранах добавления и редактирования страниц.Приспособьтесь к своему случаю и наслаждайтесь :)
WordPress не предоставляет никакого крючка, поэтому вы не можете удалить его из PHP.
Одна альтернатива, которую я мог бы придумать, заключается в том, что вы можете удалить его динамически с помощью JavaScript. Включите фрагмент JavaScript на странице
Я знаю, что это не чистое решение, но я думаю, что это единственный возможный путь на данный момент.add post
, который удалит опцию из элементаselect
.Edit:
Другой вариант-скопировать файл шаблона в каталог темы, когда плагин активируется и удаляет файл шаблона, когда плагин деактивирован.
Предполагается, что шаблон используется только этим плагином.