Intereting Posts
Где находится содержимое виджетов, хранящихся в таблице mysql Добавление динамического файла Sitemap в нижний колонтитул Показать содержимое на основе номера страницы Подсчитайте все изображения определенного типа сообщения Как показать отображаемое изображение внутри сообщения только в одной отдельной категории Пытаясь использовать WP_Query для возврата сообщения с мета-значениями и без них Показать содержимое сайта на основе роли пользователя tinymce, как добавить содержимое и изображения в контейнер пользовательский шаблон только для контента Настройка темы с помощью панели администратора. (Внешний вид-Настройка) Как разрешить доступ к двум учетным записям пользователей, используя один логин? Запустите запрос на странице определенных параметров администрирования и отправьте результаты для выбора поля в другой функции Слияние двух WP_Queries, сообщений на странице и разбиения на страницы не работает Используйте WP_Query или query_posts () или get_posts () для оптимизации сайта? Плагин WordPress.com Stats требует входа в систему и перенаправления на WordPress.com при входе в систему

Правило перезаписи: пользовательский тип сообщения с 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);