Как удалить слово TAG из ссылки (УРЛа) метки в WordPress
Ищу решение без плагина, как удалить слово tag из постоянной ссылки (УРЛа) в WordPress.
Ваше простое решение для категорий, помогло:
add_filter( 'category_link', function($a){
return str_replace( 'category/', '', $a );
}, 99 );
(кликнул на рекламу адсенс + с переходами в благодарность =))
Но попытка сделать:
add_filter( 'tag_link', function($a){
return str_replace( 'tag/', '', $a );
}, 99 );
не увенчалась успехом... 404е в тагах.
Помогите пожалуйста. С меня, 4 репоста вашего блога в соц сети, в благодарность 
у вас на сайте стоит плагин seo ultimate?
Нет. all-in-one-seo-pack стоит. Думаете плагин какой то может блочить? Дело в том что ссылки меняются (после того как я прописал в функшнс.пхп), если зайти в метки через админку, но после перехода по измененной ссылке, – 404я... Пришлось вернуться на WP-No-Tag-Base, а так хотелось от него избавиться.
поставьте вместо all-in-one-seo-pack - xml sitemap + seo ultimate, в последнем как раз есть то что вам нужно.
http://prntscr.com/jyst6s
http://prntscr.com/jysssr
естетственно свой код уберите из functions.php который вы вставили
Спасибо за ответ.
Я уверен, что есть несложное решение кодом, как с категориями. Просто это мало кому необходимо, вот в сети его и нет.
Сделайте свой плагин с таким кодом
<?php /* Plugin Name: Description: Version: 1.0 Author: Сергей Author URI: */ // Refresh rules on activation/deactivation/tag changes register_activation_hook( __FILE__, 'no_tag_base_refresh_rules' ); add_action( 'created_post_tag', 'no_tag_base_refresh_rules' ); add_action( 'edited_post_tag', 'no_tag_base_refresh_rules' ); add_action( 'delete_post_tag', 'no_tag_base_refresh_rules' ); function no_tag_base_refresh_rules() { global $wp_rewrite; $wp_rewrite->flush_rules(); } register_deactivation_hook( __FILE__, 'no_tag_base_deactivate' ); function no_tag_base_deactivate() { remove_filter( 'tag_rewrite_rules', 'no_tag_base_rewrite_rules' ); no_tag_base_refresh_rules(); } // Remove tag base permastruct add_action( 'init', 'no_tag_base_permastruct' ); function no_tag_base_permastruct() { global $wp_rewrite, $wp_version; if ( version_compare( $wp_version, '3.4', '<' ) ) { // For pre-3.4 support $wp_rewrite->extra_permastructs['post_tag'][0] = '%post_tag%'; } else { $wp_rewrite->extra_permastructs['post_tag']['struct'] = '%post_tag%'; } } // Add our custom tag rewrite rules add_filter( 'tag_rewrite_rules', 'no_tag_base_rewrite_rules' ); function no_tag_base_rewrite_rules( $tag_rewrite ) { $tag_rewrite = array(); $tags = get_tags( array( 'hide_empty' => false ) ); foreach ( $tags as $tag ) { $tag_nicename = $tag->slug; if ( $tag->parent == $tag_id ) { $tag->parent = 0; } //the magic $tag_rewrite[ '(' . $tag_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$' ] = 'index.php?tag=$matches[1]&feed=$matches[2]'; $tag_rewrite[ '(' . $tag_nicename . ')/page/?([0-9]{1,})/?$' ] = 'index.php?tag=$matches[1]&paged=$matches[2]'; $tag_rewrite[ '(' . $tag_nicename . ')/?$' ] = 'index.php?tag=$matches[1]'; } // Redirect support from Old Category Base global $wp_rewrite; $old_tag_base = get_option( 'tag_base' ) ? get_option( 'tag_base' ) : 'tag'; $old_tag_base = trim( $old_tag_base, '/' ); $tag_rewrite[ $old_tag_base . '/(.*)$' ] = 'index.php?tag_redirect=$matches[1]'; return $tag_rewrite; } // Add 'tag_redirect' query variable add_filter( 'query_vars', 'no_tag_base_query_vars' ); function no_tag_base_query_vars( $public_query_vars ) { $public_query_vars[] = 'tag_redirect'; return $public_query_vars; } // Redirect if 'tag_redirect' is set add_filter( 'request', 'no_tag_base_request' ); function no_tag_base_request( $query_vars ) { if ( isset( $query_vars['tag_redirect'] ) ) { $tag = user_trailingslashit( $query_vars['tag_redirect'], 'post_tag' ); $taglink = trailingslashit( get_option( 'home' ) ) . $tag; status_header( 301 ); header( "Location: $taglink" ); exit(); } return $query_vars; }