Как скрыть шаблон в Wordpress? [закрытый]


Есть ли способ скрыть файл шаблона в admin?

Например, у меня есть шаблон, который должен быть доступен только в том случае, если установлен определенный плагин, и я уже знаю, как проверить, активен ли плагин. Но как скрыть шаблон?

Например, я хочу скрыть "перенаправление блоггера" - шаблон ниже:

Образ - это только пример...

Я нашел несколько ссылок, но все решения кажутся устаревшими.

Править: если кому-то интересно, как я проверяю если pluin активен, я делаю это со следующей функцией:

function isPluginActive($plugin){
        if ( in_array( $plugin, apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) )
        {
            return true;
        }
        return false;
    }
2 5

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:

Другой вариант-скопировать файл шаблона в каталог темы, когда плагин активируется и удаляет файл шаблона, когда плагин деактивирован.

Предполагается, что шаблон используется только этим плагином.