Есть ли способ скрыть файл шаблона в admin?
Например, у меня есть шаблон, который должен быть доступен только в том случае, если установлен определенный плагин, и я уже знаю, как проверить, активен ли плагин. Но как скрыть шаблон?
Например, я хочу скрыть «перенаправление Blogger» – ниже:
Я нашел несколько ссылок, но все решения кажутся устаревшими.
EDIT: Если кто-то заинтересован в том, как я проверяю, активен ли pluin, я делаю это со следующей функцией:
function isPluginActive($plugin){ if ( in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) { return true; } return false; }
Обновление – предостережение, как указано в комментариях к андре:
Используйте этот код с осторожностью. Если у вас есть какие-либо страницы с использованием шаблона, который вы удалили из выбора, обновление страницы приведет к возврату к шаблону по умолчанию
Я не уверен, есть ли способ PHP для этого – вам придется искать в классе WP_Theme
, но с первого взгляда это может быть невозможно, потому что для того, чтобы получить все шаблоны, класс использует внутреннюю функцию scandir()
который сканирует текущий каталог темы и получает все .php
файлы оттуда. Затем он ищет соответствующее Template Name:
идентификатор, и если он присутствует, он добавляется в список шаблонов.
Поэтому вместо этого я предлагаю, чтобы вы добавили немного JS, который удалит эту опцию из выбора шаблона страницы. Вот фрагмент кода:
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
.
Я знаю, что это не чистое решение, но я думаю, что это единственный возможный способ.
Изменить :
Другой вариант – скопировать файл шаблона в каталог тем, когда активирован плагин, и удалите файл шаблона, когда плагин отключен.
Это предполагает, что шаблон используется только этим плагином.