Intereting Posts
wp_list_table пытается сделать встроенное редактирование Программно добавьте меню навигации и пункты меню Удаление терминов и отношений таксономии в пользовательском post_type при удалении пользователя Создание нового динамического меню, включая ссылки BP Как создать контактную форму 7 в толстоблоке? Используйте поиск WordPress на внешнем статическом веб-сайте Любой способ назначить категории и теги ссылок на ссылки? Добавить html слово перед категорией Вложенное изображение и текст в редакторе не работают Отображение и отображение зон доставки WooCommerce в интерфейсе? как получить путь к изображениям в папке uploads, которая будет использоваться в плагине Отправить автоматическую электронную почту пользователю после wp_create_user Удалить содержимое после тегов <! – more-> Как добавить фильтр в функцию get_body_class? Как отображать содержимое во всплывающем окне при нажатии нескольких div?

Добавление пользовательских запросов vars к довольно постоянным ссылкам

Я создаю плагин wordpress, где у меня есть некоторые пользовательские строки запросов, добавленные с URL-адресами, для достижения желаемой функциональности. Мне нужны довольно постоянные ссылки, такие как имя записи в настройках wordress. Как я могу это достичь? Я использовал некоторые из встроенных функций wordpress, но это не работает для меня.

я хочу показать этот URL-адрес

http://example.com/?p=6&t=123 

как это

 http://example.com/page6/t/123 

Какие-либо предложения ?

Используйте add_rewrite_rule для захвата URL- add_rewrite_rule и преобразования в параметры внутри.

 http://example.com/page{p}/t/{t} to http://example.com/?p={p}&t={t} 

Добавьте в свой файл functions.php или в плагин.

 <?php if ( ! class_exists( 'SimpleRewrite' ) ): class SimpleRewrite { const ENDPOINT_QUERY_NAME = 'page'; const ENDPOINT_QUERY_PARAM = '__rewrite_page'; // WordPress hooks public function init() { add_filter( 'query_vars', array ( $this, 'add_query_vars' ), 0 ); add_action( 'parse_request', array ( $this, 'sniff_requests' ), 0 ); add_action( 'init', array ( $this, 'add_endpoint' ), 0 ); } // Add public query vars public function add_query_vars( $vars ) { // add all the things we know we'll use $vars[] = static::ENDPOINT_QUERY_PARAM; $vars[] = 'p'; $vars[] = 't'; return $vars; } // Add API Endpoint public function add_endpoint() { add_rewrite_rule( '^' . static::ENDPOINT_QUERY_NAME . '([^/]*)/t/([^/]*)/?', 'index.php?' . static::ENDPOINT_QUERY_PARAM . '=1&p=$matches[1]&t=$matches[2]', 'top' ); ////////////////////////////////// flush_rewrite_rules( false ); //// <---------- REMOVE THIS WHEN DONE ////////////////////////////////// } // Sniff Requests public function sniff_requests( $wp_query ) { global $wp; if ( isset( $wp->query_vars[ static::ENDPOINT_QUERY_PARAM ], $wp->query_vars[ 'p' ], $wp->query_vars[ 't' ] ) ) { $this->handle_request(); // handle it } } // Handle Requests protected function handle_request() { global $wp; $page = $wp->query_vars[ 'p' ]; $t = $wp->query_vars[ 't' ]; add_filter( 'template_include', function( $original_template ) { return __DIR__ . '/custom.php'; } ); } } $wpSimpleRewrite = new SimpleRewrite(); $wpSimpleRewrite->init(); endif; // SimpleRewrite 

Чтобы ограничить параметры только номерами « \d », измените совпадение перезаписи на:

 '^' . static::ENDPOINT_QUERY_NAME . '(\d*)/t/(\d*)/?'