我搜索了here is the closes result.
我正在建立一个新的wordpress网站。我希望大多数帖子在网址中没有类别,只需www.site.com/title。但是我确实希望博客文章是独立的,所以我想要www.site.com/blog/title。我还想选择在未来添加更多类似的选项,仅针对特定类别,而不是整个网站。
在stackoverflow上有很多与此类似的问题,但大多数都有0个回复。任何建议都会很棒。我甚至没有运气就试过Advanced Permalinks。
答案 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
模板
注意:我还没有测试过,但这是你改变永久链接的方式。我也采用了类似的方式来更改档案和搜索结果的永久链接。