Filtros? Alguém?
Não há nenhum filtro para ajudar: page_template_dropdown($template);
é usado para criar o menu suspenso e não é filtrável.
Entrando na matriz de modelos?
Para criar o conteúdo suspenso, a caixa meta do núcleo usa get_page_templates()
. De dentro, a função se parece com o seguinte:
$themes = get_themes();
$theme = get_current_theme();
$templates = $themes[$theme]['Template Files'];
Mas, ao olhar para get_themes();
, não há nenhuma possibilidade de interceptar a lista de modelos. Ainda mais temos o problema, que não há chance de obter um modelo fora do diretório de temas…
... Fingindo um tema!
A teoria e suas desvantagens…
Você pode usar register_theme_directory()
para adicionar um diretório de tema adicional onde você pode colocar modelos. Então, o mais fácil seria registrar seu plugin como pasta de temas também:
// Register during init hook:
register_theme_directory( plugin_dir_path( __FILE__ ).'templates' );
Nota: É aqui que não sei se vai funcionar .
Durante a ativação do plugin:
Então você deve colocar um arquivo style.css.php
dentro de sua pasta templates
. Isso permitiria que você adicionasse variáveis ao seu arquivo. Essa variável seria então o tema pai. E o tema pai deve ser simplesmente o tema atualmente ativo. Em seguida, atualize seu tema ativo para o seu plugin.
Drawback # 2: Sobre o »Aparência« Interface do usuário… Talvez adicione uma nota dizendo que esse "Tema" não deve ser usado como tema real. Deixo o resto de »Evitar activar este tema« coisas para a tua imaginação. De qualquer forma: deve funcionar.
Drawback # 2: Esse truque evitará com sucesso temas infantis. Você está autorizado a ter um tema pai. Nada mais.