我已经搜索过了,这里是关闭结果。
我正在建立一个新的 wordpress 网站。我希望大多数帖子在 URL 中没有类别,只是 www.site.com/title。但是我确实希望博客文章是分开的,所以我想要 www.site.com/blog/title。我还希望将来可以添加更多类似的选项,仅针对特定类别,而不是整个站点。
在 stackoverflow 上有很多与此类似的问题,但大多数有 0 个回复。任何建议都会很棒。我什至没有任何运气尝试过高级永久链接。
您可以通过 Setting > Permalinks 简单地做到这一点,并将 value 添加到 Common Setting > Custom Structure 中/blog/%postname%/
。在那里,您将获得可从 www.site.com/blog/title 访问的博客文章。
我无法理解第一个问题。经过:
我希望大多数帖子在 URL 中没有类别
你的意思是没有 www.site.com/category/category-name?还是没有 www.site.com/category/post?
编辑#1
要回答这个问题:
www.site.com/category/post 是我只想要“博客”类别的博客文章>如果类别是“鞋子”我不希望在 URL 中显示该类别。——</p>
第一:您可以将永久链接设置为,/%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
模板上添加这些功能
注意:我尚未对其进行测试,但这就是您更改永久链接的方式。我做了类似的方法来更改我在档案和搜索结果上的永久链接。