如何将“博客”slug 添加到 WordPress 帖子?

Jan*_*ati 3 php wordpress

我正在做 WordPress 项目,我有一个困难,我想在博客文章中添加“Blog”slug

例如我当前的博客 slug 是这样的

http://www.abc.com/post
Run Code Online (Sandbox Code Playgroud)

我想让它像

http://www.abc.com/blog/post
Run Code Online (Sandbox Code Playgroud)

我不想创建自定义帖子类型,我需要使用现有的帖子类型

我尝试了很多解决方案,例如将永久链接更改为 blog/%postname%

一个解决方案对我有用

下面是我的代码

add_action( 'init', 'my_new_default_post_type', 1 );
function my_new_default_post_type() {

    register_post_type( 'post', array(
        'labels' => array(
            'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
        ),
        'public'  => true,
        '_builtin' => false, 
        '_edit_link' => 'post.php?post=%d', 
        'capability_type' => 'post',
        'map_meta_cap' => true,
        'hierarchical' => false,
        'rewrite' => array( 'slug' => 'blog' ),
        'query_var' => false,
        'with_front' => false,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    ) );
}
Run Code Online (Sandbox Code Playgroud)

我已将此代码添加到我的functions.php 中,并将slug 添加到帖子中。但是当我点击特定帖子时,问题出现了,它会重定向到 404 页面。如果我删除此代码,我将重定向到正确的帖子。

需要你的建议。

jnh*_*tea 7

只需转到您的永久链接设置,确保将其设置为自定义,并在 %post_name% 前面添加“/blog/”,这样,如果您还使用 CPT make,您的结构前面就会有“/blog/”确保在注册它们时添加 'with_front'=>false:

'rewrite' => array( 'slug' => 'cpt_name', 'with_front'=> false ),
Run Code Online (Sandbox Code Playgroud)

它的工作方式是:如果您的永久链接结构是 /blog/,那么您的链接将是: if with_front = false 永久链接:/news/ 如果 with_front = true 永久链接:/blog/news/

问题是它默认为 true

包含此信息的 WordPress Codex 页面位于此处

您还需要注意的是:如果在插件内注册帖子类型,请在激活和停用挂钩中调用flush_rewrite_rules()(请参阅下面的激活时刷新重写)。如果未使用flush_rewrite_rules(),则您必须手动转到“设置”>“永久链接”并刷新您的永久链接结构,然后自定义帖子类型才会显示正确的结构。