【问题标题】:How to add blog directory in front of single WordPress post?如何在单个 WordPress 帖子前面添加博客目录?
【发布时间】:2014-01-23 02:22:57
【问题描述】:

我设置了一个 WordPress 网站,我希望在查看单个帖子时在 URL 中显示博客目录:

mysite.com/blog/my-first-post 而不是mysite.com/my-first-post

任何想法如何做到这一点?

【问题讨论】:

标签: wordpress


【解决方案1】:
  1. 创建主页和博客页面(确保博客页面命名为“博客”且 slug 为“博客”)
  2. 进入设置>阅读
  3. 选择静态主页
  4. 设置主页和博客页面
  5. 转到设置>固定链接
  6. 创建自定义结构:/blog/%postname%/

来自 WordPress 法典:http://codex.wordpress.org/Making_Your_Blog_Appear_in_a_Non-Root_Folder

【讨论】:

  • 我一直在为我所有的 WP 网站这样做,但我遇到了一个问题。其他生成虚拟页面的插件,例如推荐信和活动,在 URL 的前面都有“博客”。有没有办法可以将永久链接设置为帖子名称,并且仅在查看单个博客帖子时应用 /blog/?
【解决方案2】:

我知道这个问题很老,但有人可能会从我的回答中受益:

有两个部分:添加规则使 /blog/article-slug 和 /blog/paged/ 指向正确的 URL,以及将所有 slug 修改为新链接:

function THEME_SLUG_posts_add_rewrite_rules( $wp_rewrite )
{
    $new_rules = [
        'articles/page/([0-9]{1,})/?$' => 'index.php?post_type=post&paged='. $wp_rewrite->preg_index(1),
        'articles/(.+?)/?$' => 'index.php?post_type=post&name='. $wp_rewrite->preg_index(1),
    ];
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
    return $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'THEME_SLUG_posts_add_rewrite_rules');

function THEME_SLUG_posts_change_blog_links($post_link, $id=0){
    $post = get_post($id);
    if( is_object($post) && $post->post_type == 'post'){
        return home_url('/articles/'. $post->post_name.'/');
    }
    return $post_link;
}
add_filter('post_link', 'THEME_SLUG_posts_change_blog_links', 1, 3);

这是在博客文章标题前添加 /articles/ 的示例。不要忘记刷新重写规则,例如通过保存永久链接设置

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-02
    • 2023-03-27
    • 1970-01-01
    • 2017-07-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多