get_page_template()
pode ser substituído pelo page_template
filtro. Se o seu plug-in é um diretório com os modelos como arquivos, é apenas uma questão de passar os nomes desses arquivos. Se você quiser criá-los "on the fly" (editá-los na área de administração e salvá-los no banco de dados?), Convém escrevê-los em um diretório de cache e consultá-los, ou conectar-se template_redirect
e fazer eval()
coisas loucas .
Um exemplo simples para um plug-in que "redireciona" para um arquivo no mesmo diretório de plug-ins se um determinado critério for verdadeiro:
add_filter( 'page_template', 'wpa3396_page_template' );
function wpa3396_page_template( $page_template )
{
if ( is_page( 'my-custom-page-slug' ) ) {
$page_template = dirname( __FILE__ ) . '/custom-page-template.php';
}
return $page_template;
}
Substituir
get_page_template()
é apenas um hack rápido. Ele não permite que o modelo seja selecionado na tela Admin e o slug da página é codificado no plug-in para que o usuário não tenha como saber de onde vem o modelo.A solução preferida seria seguir este tutorial, que permite registrar um modelo de página no back-end a partir do plug-in. Então funciona como qualquer outro modelo.
fonte
Sim, é possível. Achei este exemplo de plugin muito útil.
Outra abordagem que me vem à cabeça é o uso da API do sistema de arquivos WP para criar o arquivo de modelo para o tema. Não tenho certeza de que é a melhor abordagem a ser adotada, mas tenho certeza de que funciona!
fonte
Nenhuma das respostas anteriores estava funcionando para a minha. Aqui um onde você pode escolher o seu modelo no administrador do Wordpress. Basta colocá-lo no seu arquivo principal de plug-in php e mudar
template-configurator.php
pelo nome do seu modelofonte