Gostaria de saber se é possível usar um arquivo de modelo para um URL específico sem ter que criar uma página para esse modelo.
Este é o meu problema simplificado:
Criei uma página no WP com algum conteúdo de link que aponta para um URL específico com alguns dados de formulário à direita: (mysite.com/retail/?a=test&b=1234) .
Quero que esse URL (varejo) use automaticamente meu arquivo de modelo template-retail.php que eu tenho no diretório de temas filho, sem precisar criar uma página chamada "retail" e selecionar a página de modelo a partir daí. Há apenas conteúdo externo no arquivo template-retail.php, nada do próprio Wordpress.
Isso é possível?
template_redirect
ou um endpointRespostas:
Você pode apenas olhar para o URL, carregar o arquivo e sair.
Isso pode ser feito quando o WordPress carregou seu ambiente, por exemplo, ativado
'init'
.Observe que, para isso, uma página real com slug "retail" nunca pode ser usada.
Isso é muito fácil, mas também codificado, então se você precisar disso para uma única página, tudo bem. Se você precisar controlar mais URLs, consulte a solução proposta nesta resposta .
fonte
var_dump($url_path);
ver como ela se parece e ajuste o código. Esse valor depende do seu URL real . Por exemplo, para URL doméstico personalizado ou WP instalado na subpasta pode ser diferente. @Keat$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/');
$templatename = 'retail';
$pos = strpos($url_path, $templatename);
if ($pos !== false) {
A
init
ação não é apropriada para o que você está tentando alcançar. Você deveria estar usando otemplate_include
filtro. Você combinaria isso comget_query_var
para recuperar os parâmetros de URL e verificar qual modelo precisa ser carregado. Aqui estão os links:Código:
fonte
A maneira do WordPress de fazer isso é com
page-templates
. https://developer.wordpress.org/themes/template-files-section/page-template-files/Você só precisa de um código para o modelo do WordPress. No seu tema WordPress, você pode criar um modelo de página e renomeá-lo para
page-id.php
Essa página em particular irá buscá-la automaticamente e usar o modelo.
Por exemplo, se sua página tiver um ID 5874, você nomeará o modelo como
page-5784.php
Você também pode nomear o modelo com base no slug da página. Por exemplo, se o slug da página for
hello-world
, o nome do modelo serápage-hello-world.php
Veja também: - https://developer.wordpress.org/files/2014/10/template-hierarchy.png
fonte
@ shivanand-sharma este é o método perfeito e mais limpo ( https://developer.wordpress.org/themes/template-files-section/page-template-files/ ) para criar qualquer página como qualquer outra no wordpress, e se você quiser para ocultar sua página, basta usar o plug-in simples e eficaz ' https://wordpress.org/plugins/exclude-pages/ '
Devo dizer que eu precisava de um URL para criar POST ou GET em minha própria página e salvar alguns dados da sessão 'WC () -> session', e isso resolve esse e outros problemas, porque você pode ter uma espinha dorsal personalizada código php, incluindo todos os 'require (' wp-load ') etc' de todo o wordpress, woocommerce etc. para trabalhar com, mysite.com/index.php/MYPAGE .....
Você só precisa:
Primeiro: Crie um arquivo dentro da localização do tema como modelo da nova página, algo como 'wp-content / themes / mytheme / customtemplate.php' (o comentário é importante para que o 'Template Name' possa ser observado pelo Wordpress):
Segundo: Crie uma página no wordpress normalmente através de 'wp-admin'> Páginas (digamos um nome como MYPAGE , ou você pode alterar a lesma o que quiser) e, claro, vincule o modelo anterior como o modelo desta página, que é o nome 'WhateverName' na seção de atributos do modelo.
Então, vamos abrir a nova página 'mysite.com/index.php/MYPAGE' e você verá.
Extras: Vamos criar funções javascript ou jquery no carrinho, checkout, o que você puder imaginar dentro das tags HTML 'script' e incluir código como este:
fonte