从标题生成插件时,不要用空字符串(“”)替换“|”

时间:2019-05-16 作者:Marg9

我在一家建筑公司工作,我们的项目名称大致如下:house|something, bridge|somewhere, building|whatever.

现在,当我想添加一个名为这样的新项目时,WordPress会自动将其转换为housesomething, bridgesomewhere 把它当作子弹。我更喜欢保留某种分隔符,例如。house-something, bridge-somewhere 相反

那么,如何让WordPress转换|- 而不是Empty String ("")? 很明显,我厌倦了一直手工操作。

在我看来,这很容易做到。如果一个人知道在哪里查找(在WP核心或任何地方),只需要简单的搜索和替换之类的东西,但我根本不知道在哪里查找,或者执行什么代码。

2 个回复
最合适的回答,由SO网友:cjbj 整理而成

当WordPressinserts a post, 它通过一个名为sanitize_title 去拿子弹。默认情况下,有一个名为santize_title_with_dashes 附加到此过滤器,优先级为10。此函数只是将|. 如果它被空格包围,则这些空格将转换为连字符。

因此,您的任务是在默认挂钩之前(例如,优先级9)在同一挂钩上运行筛选器,并替换| 具有- 在它被剥去之前。像这样:

add_filter( \'sanitize_title\', function ( $title ) {
    return str_replace( \'|\', \'-\', $title );
}, 9 );

SO网友:Michelle

如果在单词和分隔符之间放置空格,永久对齐将自动在单词之间包含破折号。例如,尝试将此作为您的帖子标题:

house | something, bridge | somewhere
这导致了slug:

house-something-bridge-somewhere

相关推荐

如何输出所有的Apply_Filters和Do_action?

我想输出所有apply\\u过滤器和do\\u操作,以向用户提供它们的概述。如果我使用代码add_filter( \'wpErpOs_testFilter\', \'wpErpOs_testFilter_callback\', 10, 1 ); function wpErpOs_testFilter_callback( $testVar ) { $testVar[] = \"GM\"; return $testVar; } $testVar = array(\"V