Интересно, возможно ли использовать файл шаблона для определенного URL, не создавая страницу для этого шаблона.
Это моя упрощенная проблема:
Я создал страницу в WP с некоторым содержанием ссылок, которое указывает на конкретный URL с некоторыми данными в конце формы: (mysite.com/retail/?a=test&b=1234) .
Я хочу, чтобы этот URL-адрес (розничная торговля) автоматически использовал мой файл шаблона template-retail.php, который у меня есть в каталоге дочерней темы, без необходимости создавать страницу с именем «retail» и выбирать оттуда страницу шаблона. В файле template-retail.php есть только внешнее содержимое, ничего из самого Wordpress.
Это возможно?
template_redirect
или конечная точкаОтветы:
Вы можете просто посмотреть на URL, загрузить файл и выйти.
Это можно сделать, когда WordPress загрузил свою среду, например, на
'init'
.Обратите внимание, что при этом нельзя использовать настоящую страницу с слагом "retail".
Это довольно просто, но также жестко запрограммировано, так что если вам нужно это для одной страницы, это нормально. Если вам нужно контролировать больше URL, взгляните на решение, предложенное в этом ответе .
источник
var_dump($url_path);
и посмотрите, как это выглядит, и скорректируйте код. Это значение зависит от вашего реального URL. Например, для настраиваемого домашнего URL или WP, установленного в подпапке, могут быть другие. @Keat$url_path = trim(parse_url(add_query_arg(array()), PHP_URL_PATH), '/');
$templatename = 'retail';
$pos = strpos($url_path, $templatename);
if ($pos !== false) {
init
Действие не подходит для того, что вы пытаетесь достичь. Вы должны использоватьtemplate_include
фильтр вместо этого. Вы бы соединили это сget_query_var
получением параметров URL, чтобы проверить, какой шаблон нужно загрузить. Вот ссылки:Код:
источник
WordPress-способ сделать это с
page-templates
. https://developer.wordpress.org/themes/template-files-section/page-template-files/Вам нужен только код для шаблона WordPress. В вашей теме WordPress вы можете создать шаблон страницы и переименовать его в
page-id.php
Эта конкретная страница автоматически поднимет ее и будет использовать шаблон.
Например, если ваша страница имеет идентификатор 5874, вы назовете шаблон как
page-5784.php
Вы также можете назвать шаблон на основе слаг страницы. Например, если слаг страницы,
hello-world
то имя шаблона будетpage-hello-world.php
Также смотрите: - https://developer.wordpress.org/files/2014/10/template-hierarchy.png
источник
@ shivanand-sharma - это идеальный и более чистый метод ( https://developer.wordpress.org/themes/template-files-section/page-template-files/ ) для создания любой страницы, как любой другой в WordPress, и если вы хотите чтобы скрыть свою страницу, я просто использую простой и эффективный плагин " https://wordpress.org/plugins/exclude-pages/ "
Я должен сказать, что мне нужен URL, чтобы сделать POST или GET на моей собственной странице и сохранить некоторые данные сеанса 'WC () -> сеанс', и это решает эту и другие проблемы, потому что вы можете иметь основу пользовательских PHP-код, включая все 'require (' wp-load ') и т. д. "всего wordpress, woocommerce и т. д. для работы с ним, mysite.com/index.php/MYPAGE .....
Вам просто нужно:
Во-первых: создайте файл внутри местоположения вашей темы в качестве шаблона новой страницы, например, «wp-content / themes / mytheme / customtemplate.php» (комментарий важен, так что Wordpress может наблюдать «имя шаблона»):
Во-вторых: Создайте страницу в WordPress обычно через «wp-admin»> «Страницы» (скажем, имя, подобное MYPAGE , или вы можете изменить слаг, как хотите) и, конечно же, свяжите предыдущий шаблон как шаблон этой страницы, который называется «WhwhatName» в разделе атрибутов шаблона.
Итак, давайте откроем новую страницу «mysite.com/index.php/MYPAGE», и вы увидите.
Дополнительно: давайте создадим функции javascript или jquery в корзине, оформлении заказа, что угодно, что вы можете себе представить внутри HTML-тегов «script», и включите в них следующий код:
источник