Intereting Posts
Отзывчивое вложение для короткого кода видео цена и безопасность хоста сайта wordpress Как разрешить администраторам создавать боковую панель от администратора В Multisite: Site / Blog IDstill существует после удаления сайта Есть ли способ предоставить пользователю список существующего контента в CPT Назначение настраиваемого параметра для каждого сообщения в запросе Loop Problem: отображает тот же набор сообщений для всех категорий Идентификационные условные методы взаимодействия с пользователем не сохраняются Создайте первые 3 сообщения по-разному и используйте 2-й цикл, чтобы получить покой / смещение и разбивка на страницы разбита Сообщения истекают Lazy Load иногда не работает Ошибка Bootstrap в плагине WordPress как использовать класс walker для отображения категорий в их правильной иерархии? Удаление значка миниатюр продукта без остановки изображений вариаций Расширенные пользовательские поля – термины таксономии изображения

Структура Permalink с переменными $ _SESSION

У меня есть проект, контент которого фильтруется по всему сайту (многие пользовательские вызовы WP_QUERY). Первоначально не было необходимости в URL-адресах, просто отфильтровывалась переменной $ _SESSION . Работает отлично, но клиент NOW хочет, чтобы каждая специальность была загружена с помощью настраиваемого URL-адреса (как и в случае с категориями). Мне нужно сначала знать:

Можно ли создать структуру константной ссылки с переменной $ _SESSION?

Если так:

Как создать структуру URL-адресов?

Архивная страница:

http://domain.com/session-var/ 

Одна страница:

 http://domain.com/session-var/post-name 

Поэтому я смог понять это сам с помощью великого друга и разработчика php. Я извиняюсь за некоторые функциональные возможности, ie CUSTOM::slugify() является обычным, но при необходимости вы можете просмотреть тему Div Starter, чтобы узнать больше об этом.

 add_action( 'init', 'cc_rewrite_add_rewrites' ); function cc_rewrite_add_rewrites() { $specialties = get_specialties(); //Fetches an array of postmeta defined from an ACF repeater field add_rewrite_rule( "^(" . implode("|", array_map(function($a) { return strtolower(CUSTOM::slugify($a)); }, $specialties) ) . ")/?", 'index.php', 'top' ); flush_rewrite_rules(); // check path for specialty loop through specialties foreach($specialties as $specialty) { $slug = CUSTOM::slugify($specialty); // I needed to convert to a slug, custom function in Div Starter if (preg_match("/\/" . strtolower($slug) ."(\/|$)/i", strtolower($_SERVER['REQUEST_URI']) )) { // set session variable $_SESSION['specialty'] = $specialty; break; } } 

}

Я заметил, что моя разбивка на страницы использовала эту новую структуру permalink и ломала ее, поэтому я смог зацепиться за нее и удалить добавление следующим образом:

 add_filter( 'get_pagenum_link', 'wpse_cc_pagenum_link' ); function wpse_cc_pagenum_link( $link ){ return $url = str_replace( '/'.CUSTOM::slugify($_SESSION['specialty']), '', $link ); } 

Для получения дополнительной информации о настройке ваших постоянных ссылок это руководство было действительно полезно