I work for an architecture company and our project names mostly go like this: house|something
, bridge|somewhere
, building|whatever
.
Now, when I want to add a new project named like that, WordPress automatically converts it to housesomething
, bridgesomewhere
and puts that as the slug. I'd much prefer to keep some kind of separator, e.g. house-something
, bridge-somewhere
instead.
So, how to make WordPress convert |
to -
and not Empty String
(""
)? I'm obviously tired of doing that manually all the time.
It seems to me that it's very simple to do. It takes just a simple search and replace kind of thing if one knows where to look (in the WP core or wherever), but I haven't the slightest idea where to look, or what code to execute.
I work for an architecture company and our project names mostly go like this: house|something
, bridge|somewhere
, building|whatever
.
Now, when I want to add a new project named like that, WordPress automatically converts it to housesomething
, bridgesomewhere
and puts that as the slug. I'd much prefer to keep some kind of separator, e.g. house-something
, bridge-somewhere
instead.
So, how to make WordPress convert |
to -
and not Empty String
(""
)? I'm obviously tired of doing that manually all the time.
It seems to me that it's very simple to do. It takes just a simple search and replace kind of thing if one knows where to look (in the WP core or wherever), but I haven't the slightest idea where to look, or what code to execute.
Share Improve this question edited May 17, 2019 at 12:38 cjbj 15k16 gold badges42 silver badges89 bronze badges asked May 16, 2019 at 16:38 Marg9Marg9 354 bronze badges 02 Answers
Reset to default 7When WordPress inserts a post, it runs the title through a filter called sanitize_title
to get the slug. By default there is a function called santize_title_with_dashes
attached to this filter with priority 10. This function simply strips out the |
. If it is surrounded by spaces those spaces will be converted to hyphens.
So your task is to run a filter on the same hook before (say, priority 9) the default one and replace the |
with -
before it gets stripped away. Like this:
add_filter( 'sanitize_title', function ( $title ) {
return str_replace( '|', '-', $title );
}, 9 );
If you put spaces in between the words and the separator | the permalink will automatically include dashes between the words. For instance try this as your post title:
house | something, bridge | somewhere
That results in the slug:
house-something-bridge-somewhere
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745465991a4628921.html
评论列表(0条)