You can use the “post_link” filter with a conditional to check the post type to modify the single posts.
For example:
add_filter( 'post_link', function($post_link, $id){
$post = get_post( $id );
if( is_object( $post ) && 'post' === $post->post_type ) {
return home_url( '/blog/' . $post->post_name );
}
return $post_link;
}, 10, 2 );
You would also need to modify the rewrite rules using the ‘generate_rewrite_rules’ filter.
Edit: This question has already been answered with a better code example here: Custom permalink structure with a prefix just for posts
Related Posts:
- How to Check if a Page Exists by URL?
- Use category base slug in posts’ permalink
- How to automatically generate a unique random slug
- Custom permalink structure only for default posts
- Post slugs and images cannot have same name?
- Change the Slug of Post Type post to baseurl/post/%postname%
- Different permalink for posts and authors
- Pretty URL with add_query_var
- get_permalink returns default link
- Group Posts by First Letter of Title
- Keep getting same permalink with WP_Query?
- How to control which category will be picked for the slug of a post?
- how to get permalink using sql
- Change slug with custom field
- Must permalinks always point to single post pages?
- Post custom permalink results in 404 for archive page
- Custom post type single (permalink) throws a 404 error
- Post in Multiple Categories to stay in current category (permalink, next previous post link)
- What Defines What Category A Post Picks (if in multiple)
- Permalink Settings: optional settings doesn’t apply to editor
- Custom post type permalinks breaking due to 3.1 bug fix
- How can a guest view the “Pending Review” Post?
- How to change the page break URL from ../post/2 to …/post/page2/
- change default post archive page link
- Bulk update post slugs through database
- Removing rel=”nofollow” from links posted in Post Content
- How to change permalink on post click on post listing page
- WordPress not opening posts with only numbers if permalink is post_name
- Problem with permalink routing?
- After database migration, posts not showing up in dashboard
- Switch to page template when using post permalink
- How to handle broken links created by permalink/slug changes?
- How could I change my Permalink from blog to custom structure? [closed]
- Visting slug for ‘post’ post type shows 404 not archive?
- Permalink doesn’t get displayed in Twitter button (Local WordPress problem?)
- Retrieve post ID from “querying” URL
- When changing pages to posts, how do you set up 301 redirects for the page URLs?
- Second get_permalink inside loop points to wrong URL
- custom word in custom permalink structure
- register_post_type permalink
- Updating permalink structure using ‘post_link’ filter results in 404 error for posts
- Unabled to Change Permalinks – Even Using the “Edit” (Resets to Original Permalink on “Update”)
- When WP_Query only returns 1 post, how do I automatically redirect to that post?
- Post titles and thumbnails as links to custom post types?
- Internal linking to posts permalink fail because of spaces and stripe at postname
- Link post images to post
- Problems with WordPress in subfolder, posts show a blank page
- how to create a sub section in posts
- Categories Listing and Highlighting current category item
- Standalone form does not post to the url when form fields are populated (otherwise it does)
- Rewriting blog permalinks
- Change permalinks for posts & for custom post types
- Permalink Short code showing unnecessary link text inside the loop
- My post permalinks are redirecting to the post archive page for some reason?
- How can I make a post sub link?
- How do you change the permalink for posts for a single category?
- How to set the post permalink using the WordPress REST API?
- Does having category name in permalinks affect SEO when having a post in multiple categories?
- unable to display two post per page in wordpress front-page.php
- How to 301 redirect from url with post id to permalink with post name (slug)?
- Prevent Archive URLs
- Custom Post Types and Broken Permalinks
- Custom permalink for wordpress page / post
- Permalink structure for two seperate blogs
- Category URL to use same string as Post URL Permalink
- My post permalinks are always the same
- How to give priority to page than to posts permalink structure?
- Append a random string to a post permalink
- Precedence of page permalinks over woocommerce product category links?
- Post & Category Archives URL structure
- Fixing the WP Post Object for Custom Route
- All my posts don’t show, only the headline is displayed on the homepage
- How to change post template via url?
- Posts in Page – How to customize the URL?
- Is there a way to change the complete URL of the blog post for a redirecting tracking link?
- WordPress with static posts page and custom permalink structure doesn’t find posts with numeric permalinks
- Use a custom post URL that is outside the blog root directory
- Can’t seem to replicate permalink structure for localhost development site
- WordPress rewrite url help needed
- Permalink of some posts change
- My posts section for logged in user
- Change link to permalink inside post content
- Make assigning post to a specific category equivalent to assigning it to all categories
- How to mix pages and sub-categories in a url
- Changing permalink of custom category
- TCPDF and permalinks
- Overwrite URL on blog posts
- WordPress sub-posts and permalinks
- How to display subcategory articles in the category view?
- Change posts URL [duplicate]
- 301 Redirecting posts without %postid% (just %post_name%) in permalink to ones with %post_name%_%postid%
- Permalink remain the same on each page
- Read more link not working [closed]
- After the local installation of an old WP website I can see the homepage but I can’t access to the articles, why?
- How to change Permalinks only for Blogposts
- Permalink structure for two separate blogs
- Blog posts are not appearing as subs of Blog Page
- How can I fixe the article title problem?
- How to add paraent in Blog post URL in wordpress
- Change permalinks in posts via SQL