WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как удалить слово 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 репоста вашего блога в соц сети, в благодарность smile

0
Владимир
24 июня 2018
  • 0
    el-lable335 el-lable.ru

    у вас на сайте стоит плагин seo ultimate?

    Владимир 24 Июн. 2018

    Нет. all-in-one-seo-pack стоит. Думаете плагин какой то может блочить? Дело в том что ссылки меняются (после того как я прописал в функшнс.пхп), если зайти в метки через админку, но после перехода по измененной ссылке, – 404я... Пришлось вернуться на WP-No-Tag-Base, а так хотелось от него избавиться.

    el-lable 25 Июн. 2018

    поставьте вместо all-in-one-seo-pack - xml sitemap + seo ultimate, в последнем как раз есть то что вам нужно.
    http://prntscr.com/jyst6s
    http://prntscr.com/jysssr
    естетственно свой код уберите из functions.php который вы вставили

    Владимир 25 Июн. 2018

    Спасибо за ответ.

    1. У меня большой проект и я привык к All on one, он функциональный, простой и удобный (менять очень не хочется). А так получается шило не неизвестное мыло)
    2. Я хочу реализовать это кодом без плагина.

    Я уверен, что есть несложное решение кодом, как с категориями. Просто это мало кому необходимо, вот в сети его и нет.

    Комментировать
  • 0

    Сделайте свой плагин с таким кодом

    <?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;
    
    }
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация