让WordPress自动显示仅针对特定类别的类别永久链接

时间:2012-06-13 22:09:04

标签: wordpress wordpress-plugin

我搜索了here is the closes result.

我正在建立一个新的wordpress网站。我希望大多数帖子在网址中没有类别,只需www.site.com/title。但是我确实希望博客文章是独立的,所以我想要www.site.com/blog/title。我还想选择在未来添加更多类似的选项,仅针对特定类别,而不是整个网站。

在stackoverflow上有很多与此类似的问题,但大多数都有0个回复。任何建议都会很棒。我甚至没有运气就试过Advanced Permalinks

1 个答案:

答案 0 :(得分:7)

你可以通过设置>来做到这一点。永久链接并添加到Common Setting>自定义结构值/blog/%postname%/。在那里,您可以从www.site.com/blog/title获取博客文章。

我无法理解第一个问题。由:

  

我希望大多数帖子在网址中没有类别

你的意思是没有www.site.com/category/category-name吗?或者没有www.site.com/category/post?

编辑#1

回答这个问题:

  

www.site.com/category/post是我只想要的博客文章类别为“博客”>如果类别是“鞋子”,我不希望URL中显示类别。 -

首先:您可以将固定链接设置为/%postname%/,这样您的所有帖子都可以通过该链接访问网站/标题

第二:您必须过滤固定链接,以便对“博客”类别下的帖子采取不同的行为。

试试这个

add_filter( 'post_link', 'custom_permalink', 10, 2 );
function custom_permalink( $permalink, $post ) {
    // Get the categories for the post
    $categories = wp_get_post_categories( $post->ID );
    foreach ( $categories as $cat ) {
        $post_cat    = get_category( $cat );
        $post_cats[] = $post_cat->slug;
    }

    // Check if the post have 'blog' category
    // Assuming that your 'Blog' category slug is 'blog'
    // Change 'blog' to match yours
    if ( in_array( 'blog',$post_cats ) ) {
        $permalink = trailingslashit( home_url( 'blog/' . $post->post_name ) );
    }

    return $permalink;
}

第三:你必须过滤rewrite_rules

add_filter( 'rewrite_rules_array', 'custom_rewrite_rule' );
function custom_rewrite_rule( $rules ) {
    $new_rules = array(
        'blog/([^/]+)/trackback/?$' => 'index.php?name=$matches[1]&tb=1',
        'blog/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?name=$matches[1]&feed=$matches[2]',
        'blog/([^/]+)/(feed|rdf|rss|rss2|atom)/?$' => 'index.php?name=$matches[1]&feed=$matches[2]',
        'blog/([^/]+)/comment-page-([0-9]{1,})/?$' => 'index.php?name=$matches[1]&cpage=$matches[2]',
        'blog/([^/]+)(/[0-9]+)?/?$' => 'index.php?name=$matches[1]&page=$matches[2]'
    );

    $rules = $new_rules + $rules;

    return $rules;
}

转到固定链接设置并保存设置以刷新重写规则并使更改高于活动

注意:在您的有效主题functions.php模板

上添加这些功能

注意:我还没有测试过,但这是你改变永久链接的方式。我也采用了类似的方式来更改档案和搜索结果的永久链接。