Me pregunto si es posible usar un archivo de plantilla para una URL específica sin tener que crear una página para esa plantilla.
Este es mi problema simplificado:
He creado una página en WP con algún contenido de enlace que apunta a una URL específica con algunos datos del formulario final: (mysite.com/retail/?a=test&b=1234) .
Quiero que esa url (minorista) use automáticamente mi archivo de plantilla template-retail.php que tengo en el directorio de temas secundarios, sin tener que crear una página llamada "minorista" y seleccionar la página de plantilla desde allí. Solo hay contenido externo en el archivo template-retail.php, nada del propio Wordpress.
es posible?
template_redirect
Respuestas:
Puede mirar la url, cargar el archivo y salir.
Eso se puede hacer cuando WordPress carga su entorno, por ejemplo, en
'init'
.Tenga en cuenta que al hacerlo, nunca se puede usar una página real con slug "retail".
Esto es bastante fácil, pero también está codificado, por lo que si necesita esto para una sola página, está bien. Si necesita controlar más URL, eche un vistazo a la solución propuesta en esta respuesta .
fuente
var_dump($url_path);
ver cómo se ve y ajusta el código. Ese valor depende de tu URL real . Por ejemplo, para la URL de inicio personalizada, o WP instalado en la subcarpeta puede 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) {
La
init
acción no es apropiada para lo que estás tratando de lograr. Deberías usar eltemplate_include
filtro en su lugar. Combinaría estoget_query_var
para recuperar los parámetros de URL para verificar qué plantilla necesita cargarse. Aquí están los enlaces:Código:
fuente
La forma de WordPress para hacer esto es con
page-templates
. https://developer.wordpress.org/themes/template-files-section/page-template-files/Solo necesita un código para la plantilla de WordPress. En su tema de WordPress puede crear una plantilla de página y cambiarle el nombre a
page-id.php
Esa página en particular lo recogerá automáticamente y usará la plantilla.
Por ejemplo, si su página tiene una identificación de 5874, nombrará la plantilla como
page-5784.php
También puede nombrar la plantilla en función de la babosa de la página. Por ejemplo, si la babosa de la página es,
hello-world
entonces el nombre de la plantilla serápage-hello-world.php
Ver también: - https://developer.wordpress.org/files/2014/10/template-hierarchy.png
fuente
@ shivanand-sharma este es un método perfecto y más limpio ( https://developer.wordpress.org/themes/template-files-section/page-template-files/ ) para crear cualquier página como cualquier otra en wordpress, y si lo desea para ocultar su página, solo uso el complemento simple y efectivo ' https://wordpress.org/plugins/exclude-pages/ '
Debo decir que necesitaba una URL para hacer POST o GET en mi propia página y guardar algunos datos de sesión 'WC () -> session', y esto resuelve este y otros problemas, ya que puede tener una columna vertebral personalizada código php que incluye todos los 'require (' wp-load '), etc.' de todo el wordpress, woocommerce, etc. para trabajar con, mysite.com/index.php/MYPAGE .....
Solo necesitas:
Primero: cree un archivo dentro de la ubicación de su tema como plantilla de la nueva página, algo así como 'wp-content / themes / mytheme / customtemplate.php' (El comentario es importante para que Wordpress pueda observar el 'Nombre de plantilla'):
Segundo: cree una página en wordpress normalmente a través de 'wp-admin'> Páginas (Digamos un nombre como MYPAGE , o puede cambiar la babosa lo que quiera) y, por supuesto, vincule la plantilla anterior como la plantilla de esta página, que es nombre 'Cualquiera que sea' en la sección de atributos de la plantilla.
Entonces, abramos la nueva página 'mysite.com/index.php/MYPAGE' y verás.
Extras: creemos funciones de javascript o jquery en el carrito, finalice la compra, lo que sea que pueda imaginar dentro de las etiquetas HTML de 'script' e incluya un código como este:
fuente