#php #wordpress
#php #wordpress
Вопрос:
У меня есть определенная страница на моем веб-сайте WordPress example.com/download/
, для которой у меня уже есть страница. Я хотел бы добавить какой-то php-код, чтобы включить следующие функции.
- Если есть подпуть после
/download/<name>
, я хотел бы получить файл из некоторого каталога на основе<name>
- Если не указан подпуть (
/download/
), я хочу отобразить страницу, которая уже написана
Возможно ли это с помощью перехватов / фильтров WordPress?
У меня такое чувство, что это как-то связано с классом WP_Rewrite, но я не уверен точно, что писать, и куда его поместить без WP или обновлений темы, стирающих код
Ответ №1:
Да, вам нужно добавить пользовательское правило перезаписи. Вы можете использовать functions.php чтобы добавить новую функциональность.
function custom_rewrite_rule() {
add_rewrite_rule('^download/([^/] )/?','your_url_to_the_downloader_file.php?download=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);
Чтобы это заработало, сначала вам нужно перейти Admin -> Settings -> Permalinks
и нажать кнопку сохранить, чтобы было добавлено новое правило.
Комментарии:
1. Именно то, что я искал. Спасибо
2. Просто попытался включить это. Я получил сообщение об ошибке
function custom_rewrite_rule() { add_rewrite_rule('^download/([^/] )/?','/wp-content/download_content/$matches[1]','top'); } add_action('init', 'custom_rewrite_rule', 10, 0); Warning: Cannot modify header information - headers already sent by (output started at /home/content/20/10282520/html/wp-content/themes/theme-child/functions.php:4) in /home/content/20/10282520/html/wp-includes/pluggable.php on line 1203
3. Неважно. Полная опечатка. Вот что я получаю за ночное программирование без кофе 🙂