web-dev-qa-db-ja.com

カテゴリのURLにスラッシュを追加(URLの1つのバージョンを提供)

カテゴリURLにスラッシュを追加してそのバージョンのカテゴリのみを配信するにはどうすればよいですか(スラッシュで終わらないURLはスラッシュで終わるURLにリダイレクトされます)。

"WP No Category Base"プラグインを使用してカテゴリベースを削除することができますが、カテゴリURLにスラッシュを追加する必要があります。

例:

www.example.com/es  <- this is a category (needs a forward-slash '/')

www.example.com/es/hola.html <- this is a post so, it's ok, no changes needed.

プラグインPermalink Trailing Slash Fixerは、ここでは問題を解決しません。

4
user983248

フィルタcategory_link so WordPress createsカテゴリのスラッシュ付きURL、およびredirect_canonical so it acceptsそれらのURL:

add_filter( 'category_link', 'wpse_71666_trailingslash_cat_url' );
add_filter( 'redirect_canonical', 'wpse_71666_trailingslash_cat_url', 20, 2 );

function wpse_71666_trailingslash_cat_url( $url, $request = '' )
{
    if ( 'category_link' === current_filter() )
        return rtrim( $url, '/' ) . '/';

    if ( "$url/" === $request and is_category() )
        return $request;

    return $url;
}
3
fuxia