% tag% в permalink не работает

Я использую пользовательскую структуру постоянной ссылки:

/% Тег% /% postname% /

и он не работает. Я получаю url – http://mydomain.com/%tag%/post/ . Таким образом, нет имени тега, просто% tag%. Если я ставлю% категории% вместо ot% tag%, то в порядке.

Может ли кто-нибудь решить эту проблему?

Solutions Collecting From Web of "% tag% в permalink не работает"

@ Атари попросил разрешения. У людей, у которых их нет, не нужно втыкать!

У меня такая же проблема. Все остальные% категории%% postname%% post_id% и т. Д. Разрешают штраф, но% tag% остается% tag% в последней постоянной позиции!

Я думаю, что это ошибка. Я наткнулся на патч, который был для более старой версии. Я еще не пробовал (я не знаю, как его использовать: P), потому что я использую последнюю версию (думаю, думаю, 3.0.4) .. но проблема все еще там!

Я не хочу запускать URL с% tag%, но мне нужно его по URL. Дело в том, что он должен работать … независимо от того, как я его использую!

@Atari, если вы найдете решение, пожалуйста, поделитесь им 🙂

вот патч, который я нашел .. Я был бы признателен, если бы кто-нибудь сказал мне, как его использовать 🙂

 *** link-template.php 2009-12-14 05:09:55.000000000 -0500 --- link-template_patched.php 2010-06-21 14:29:24.000000000 -0400 *************** *** 88,93 **** --- 88,94 ---- $leavename? '' : '%postname%', '%post_id%', '%category%', + '%tag%', '%author%', $leavename? '' : '%pagename%', ); *************** *** 128,134 **** --- 129,151 ---- $category = is_wp_error( $default_category ) ? '' : $default_category->slug; } } + + if ( strpos($permalink, '%tag%') !== false ) { + $tags = get_the_tags($post->ID); + + if ( $tags ) { + usort($tags, '_usort_terms_by_ID'); // order by ID + $tag = $tags[0]->slug; + } + // show default tag in permalinks, without + // having to assign it explicitly + if ( empty($tag) ) { + $default_tag = get_tag( get_option( 'default_category' ) ); + $tag = is_wp_error( $default_tag ) ? '' : $default_tag->slug; + } + } + $author = ''; if ( strpos($permalink, '%author%') !== false ) { $authordata = get_userdata($post->post_author); *************** *** 147,152 **** --- 164,170 ---- $post->post_name, $post->ID, $category, + $tag, $author, $post->post_name, ); 

Я получил следующий код для работы в WP 3.0.1 и WP 3.1 RC 2, но с важным отличием. До 3.1 структура тега явно определяется как %tag% , но в 3.1 это становится %post_tag% . Поэтому мой код обрабатывает обе ситуации. Он добавляет get_permalink() к get_permalink() и вставляет тег, если это необходимо.

 define( 'WPSE_7004_DEFAULT_TAG', 'untagged' ); if ( version_compare( $wp_version, '3.0.9' ) <= 0 ) { // This is pre-3.1 define( 'WPSE_7004_TAG_STRUCT', '%tag%' ); } else { define( 'WPSE_7004_TAG_STRUCT', '%post_tag%' ); } add_filter( 'post_link', 'wpse7004_post_link', 10, 3 ); function wpse7004_post_link( $permalink, $post, $leavename ) { if ( FALSE !== strpos( $permalink, WPSE_7004_TAG_STRUCT ) ) { $tags = get_the_tags( $post->ID ); if ( $tags ) { usort( $tags, '_usort_terms_by_ID' ); $tag = $tags[0]->slug; } else { // No tag. Use default tag name, otherwise rewrite rule matching goes wrong. $tag = WPSE_7004_DEFAULT_TAG; } $permalink = str_replace( WPSE_7004_TAG_STRUCT, $tag, $permalink ); } return $permalink; } add_filter( 'request', 'wpse7004_request' ); function wpse7004_request( $query_vars ) { if ( array_key_exists( 'tag', $query_vars ) && WPSE_7004_DEFAULT_TAG == $query_vars['tag'] ) { unset( $query_vars['tag'] ); } return $query_vars; }