我在一家建筑公司工作,我们的项目名称大致如下:house|something
, bridge|somewhere
, building|whatever
.
现在,当我想添加一个名为这样的新项目时,WordPress会自动将其转换为housesomething
, bridgesomewhere
把它当作子弹。我更喜欢保留某种分隔符,例如。house-something
, bridge-somewhere
相反
那么,如何让WordPress转换|
到-
而不是Empty String
(""
)? 很明显,我厌倦了一直手工操作。
在我看来,这很容易做到。如果一个人知道在哪里查找(在WP核心或任何地方),只需要简单的搜索和替换之类的东西,但我根本不知道在哪里查找,或者执行什么代码。
最合适的回答,由SO网友:cjbj 整理而成
当WordPressinserts a post, 它通过一个名为sanitize_title
去拿子弹。默认情况下,有一个名为santize_title_with_dashes
附加到此过滤器,优先级为10。此函数只是将|
. 如果它被空格包围,则这些空格将转换为连字符。
因此,您的任务是在默认挂钩之前(例如,优先级9)在同一挂钩上运行筛选器,并替换|
具有-
在它被剥去之前。像这样:
add_filter( \'sanitize_title\', function ( $title ) {
return str_replace( \'|\', \'-\', $title );
}, 9 );