Intereting Posts
Как сохранить поля имени электронной почты для комментариев? Как переопределить обычный поиск WordPress в Buddypress? Изменения в сообщениях исчезли (для некоторых должностей) Включите продукт WooCommerce во все дочерние категории Как добавить загрузку изображения, настраиваемое поле в продукт WooCommerce? Один элемент, который не отображается при программировании. Создание навигационного меню. Вход и регистрация Ajax – правильные ошибки отображения WordPress Customize – Переместить опции / меню «меню» в другой раздел Отображение имени и ссылки подкатегории вместо категории родительских категорий Установка WordPress самостоятельно удаляется при перезагрузке сервера. Таблицы SQL тоже ушли! Сделать URL как / fr / что-то отображаться таким же, как / что-то Добавить бесконечный свиток в Ajax Loaded Category Query Внутреннее присоединение переопределяет get_field плагина расширенного пользовательского поля Сохранение идентификатора сообщения для использования в форме в другом месте на веб-сайте Как я могу просмотреть файл readme.txt для включения встроенных изображений, видео … перед отправкой нового плагина для просмотра на wordpress.org?

Как правильно переписать URL-адрес пользовательским var

Я пытался переписать магазин uri, и теперь у меня есть этот код:

add_filter('rewrite_rules_array','wp_insertMyRewriteRules'); add_filter('query_vars','wp_insertMyRewriteQueryVars'); add_filter('wp_loaded','flushRules'); // Remember to flush_rules() when adding rules function flushRules(){ global $wp_rewrite; $wp_rewrite->flush_rules(); } // Adding a new rule function wp_insertMyRewriteRules($rules) { $newrules = array(); $newrules['shop/brand/(brand)/?$'] = 'shop.php?brand=$matches[1]' ; //$wp_rewrite->rules = $new_rules + $wp_rewrite->rules; return $newrules + $rules ; } // Adding the bid var so that WP recognizes it function wp_insertMyRewriteQueryVars($vars) { array_push($vars, 'brand'); return $vars; } 

но независимо от того, что я делаю, я не могу заставить это работать. Я использую плагин Monkeyman Rewrite Analyzer для просмотра активных перезаписных файлов и что он говорит мне, что бренд «не является публичным и не будет сохранен». Кроме того, он меняет мой shop.php на shop_php …

 shop/brand/(brand)/?$ shop_php?brand: (brand) 

Почему это такой беспорядок? Я попытался как можно меньше изменить .htaccess; также, поскольку я хочу, чтобы это было в теме.

Итак, во-первых, никогда не сбрасывайте правила перезаписи на каждую загрузку страницы. Лучше сделать это при активации плагина один раз.

Шаг 1: добавьте правило перезаписи:

 add_action( 'init', 'wpse26555_add_rewrite' ); function wpse26555_add_rewrite() { // You should probably rewrite to index.php instead of shop.php? add_rewrite_rule( '/shop/brand/([^/]+)/?$', 'index.php?brand=$matches[1]', 'top' ); } 

Шаг 2: добавьте запрос var

 add_filter( 'query_vars', 'wpse26555_add_vars' ); function wpse26555_add_vars( $vars ) { $vars[] = 'brand'; return $vars; } 

Затем включите активацию плагина (потому что что-то вроде этого, вероятно, должно быть в файле плагина).

 <?php // Somewhere in your plugin's main file register_activation_hook( __FILE__, 'wpse26555_activation' ); function wpse26555_activation() { // Add the rule first wpse26555_add_rewrite(); // Then flush rewrite rules flush_rewrite_rules(); } 

Затем на переднем конце вы можете сделать что-то вроде этого:

 if( $brand = get_query_var( 'brand' ) ) { // Do stuff with $brand here } 

Может быть, лучшей стратегией было бы переписать бренд на определенную страницу? Или, может быть, бренд может быть своего рода таможенной таксономией?

Вам придется протестировать вышеуказанный код, это было не в моей голове, но оно должно работать или, по крайней мере, начинать

спасибо за длинный ответ. Дело в том, что я не создаю плагин здесь, а просто пытаюсь взаимодействовать с ним. его плагин магазина [theCartPress], и я сделал свой собственный дизайн вокруг него и сделал страницу shop.php для такого типа сообщений типа [tcp_product].

Я получаю все сообщения этого типа сообщений, перенаправленные в нужный файл, но я также хочу иметь возможность отображать их по бренду. У меня есть _GET, поэтому я могу сделать? brand = mybrand, но я хочу использовать wordpress permalinks. На самом деле у меня есть обычная таксономия. Это то, что я использую после моего GET:

  if (($_GET['brand'] == 'owl') || !isset($_GET['brand'])) { $brand = 'owl'; } else { $brand = $_GET['brand']; } $args = array( 'post_type' => 'tcp_product', 'posts_per_page' => 30, 'tax_query' => array( array('taxonomy' => 'tcp_product_supplier', 'field' => 'slug', 'terms' => $brand))); $loop = new WP_Query( $args ); 

извините мод за использование ответа, но переформатирование комментариев невозможно.