Intereting Posts
Какой лучший способ защитить паролем магазин Woocommerce? отображение одной категории на одной странице Как добавить поля профиля пользователя в мой почтовый ящик Отключение эскизов изображений и автоматическая регенерация Редактирование раздела справки Как сообщения и категории связаны друг с другом в wp 4.1.1? Домашняя страница хоста через example.com и все остальное через example.com/blog Возможно ли установить BuddyPress с блогами, установленными на нескольких серверах? Получить конкретные боковые панели $ wp_registered_sidebars Уведомление о том, что некоторые видеоролики YouTube в некоторых сообщениях становятся недоступными Где «описание» пользовательского типа сообщения всплыло в WordPress? Создание уникальной ссылки для загрузки PDF после ввода пользователем Есть ли способ создать ссылку «копировать сообщение»? Пользовательская отдельная запись по категориям URL-адрес субдомена WordPress CDN недоступен для публики

Правило перезаписи: пользовательский тип сообщения с 2 числовыми переменными

У меня есть сайт wordpress, в котором используется специальная функция «галерея» для публикации некоторых фотографий. Я не могу найти правильное регулярное выражение для соответствия моим переменным url (я новичок с регулярным выражением)

Я хочу достичь этой формы URL:

/custom_post_type_slug/custom_post_type_name/page_num/photo_id/ 

в моем случае он должен дать:

 /gallery/name-of-gallery/1/15/ 

Я пробовал это регулярное выражение:

 add_rewrite_rule( 'gallery/(.+?)(?:/([0-9]+))?/([0-9]{1,2})/([0-9]{1,2})/?$', 'index.php?gallery=$matches[1]&page=$matches[2]&photo=$matches[3]','top' ); 

без успеха.

Когда я тестирую это правило перезаписи с помощью Query Monitor, он сообщает, что фото = $ matches [3] и страница имеет значение null.

Если бы кто-нибудь мог дать мне совет, это будет очень хорошо.

Solutions Collecting From Web of "Правило перезаписи: пользовательский тип сообщения с 2 числовыми переменными"

add_rewrite_rule() не может автоматически создать для вас структуру permalink. Вы должны использовать фильтр wp_link_pages_link . Например:

 add_filter('wp_link_pages_link', function($link, $i) { global $post, $photo_id; if ($photo_id && 'gallery' === $post->post_type) $link = $link . '/' . intval($photo_id) . '/'; return $link; }, PHP_INT_MAX, 2); 

Затем вы должны использовать add_rewrite_tag (), чтобы WordPress знал о строке запроса photo :

 add_action('init', function() { add_rewrite_tag('%photo%', '([0-9]+)'); add_rewrite_rule('^gallery/([^/]+)/([0-9]+)/([0-9]+)/?$', 'index.php?post_type=gallery&name=$matches[1]&page=$matches[2]&photo=$matches[3]', 'top'); }, 0, 0);