К сожалению, файл .htaccess не будет делать то, что вы хотите, в связи с этим, работая как переменная в WordPress. Тем не менее, существует система перезаписи WordPress (та, которая обрабатывает постоянные ссылки между прочим). Это позволит вам использовать URL-адрес, например https://www.example.com/bill/test
, и назначить «тест» переменной.
Я также рекомендую добавить плагин проверки правил перезаписи (https://wordpress.org/support/view/plugin-reviews/rewrite-rules-inspector), так как он поможет вам лучше понять, что происходит, и проверить, что ваши функции вступают в силу.
Это первое, что вам нужно сделать, это зарегистрировать новую переменную запроса. Вы можете добавить несколько. Они просто добавят URL-адрес, например, /bill/<billCategory>/<billSomething>
. Вы должны быть уверены, что держитесь подальше от имен, которые могут конфликтовать. К сожалению, они плохо документированы.
function add_bill_arguments($public_query_vars)
{
$public_query_vars[] = 'billCategory';
return $public_query_vars;
}
add_filter('query_vars', 'add_bill_arguments');
Далее вам нужно будет добавить свое правило перезаписи. Это скажет WordPress, чтобы сортировать «стоп» на /bill/
и назначить все, что следует за настройками запросов, которые вы настроили.
function bill_rewrite()
{
add_rewrite_rule('^bill/([^/]*)/?', 'index.php?pagename=bill&billCategory=$matches[1]', 'top');
}
add_action('init', 'bill_rewrite');
Теперь, когда у вас есть те, на месте, вы можете получить в переменную, как так ...
global $wp_query;
if(is_page('bill'))
{
if (isset($wp_query->query_vars['billCategory']))
$billCategory = $wp_query->query_vars['billCategory'];
echo $billCategory;
}
После того, как вы добавили свой рерайт (ы), вам нужно очистить переписывание правила. Самый простой способ сделать это - войти в админ и посетить Settings-> Permalinks. Затем нажмите кнопку «Сохранить». Когда страница перезагружается, сделайте это снова. Время от времени переписываются. Если вы установили плагин, упомянутый выше, вы можете проверить, чтобы убедиться, что они там.
Надеюсь, это поможет вам начать работу в правильном направлении.
Большое спасибо за то, что нашли время, чтобы оставить мне такой подробный ответ! Я не понимаю ваш второй код, касающийся add_rewrite_rule. Почему вы указываете index.php? В моем URL-адресе нет index.php. Я также не думаю, что мне нужна переменная pagename, так как страница, использующая эту переменную, фактически использует собственный шаблон .php. –
Все в WordPress проходит через /index.php. Вот почему он указан в перенаправлении. Вы будете нуждаться в этом, чтобы работать таким образом, если вы все еще хотите, чтобы WP загрузила все остальное. Вы также должны отделить свой код от своего макета. Если вы добавляете такую функциональность в шаблон, вы не сможете переключать шаблоны и использовать свою функциональность. Подумайте о том, как запустить ваш код с помощью «shortcode» или «переопределить шаблон». –