如何添加"博客" slu to到wordpress帖子?

时间:2014-04-17 16:14:10

标签: php wordpress

我正在开发wordpress项目,我有一个难度,我想在博客帖子中添加“Blog”slug

例如,

我目前的博客slu is就像

http://www.abc.com/post

我想让它像

http://www.abc.com/blog/post

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

我尝试了很多解决方案,例如将永久链接更改为博客/%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' ),
    ) );
}

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

需要你的建议。

2 个答案:

答案 0 :(得分:1)

一种方法是创建一个名为blog的类别,并将您的帖子分配到该类别。这样,默认的/category_name/post_name/样式永久链接将显示。

答案 1 :(得分:1)

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

'rewrite' => array( 'slug' => 'cpt_name', 'with_front'=> false ),

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

问题是它默认为true

具有此信息的wordpress codex页面为here

你还需要注意的是: 如果在插件内注册帖子类型,请在激活和取消激活挂钩中调用flush_rewrite_rules()(请参阅下面的Flushing Rewrite on Activation)。如果未使用flush_rewrite_rules(),则必须手动转到设置>永久链接并刷新永久链接结构,然后自定义帖子类型将显示正确的结构。