从插件中删除国际字符-几乎完成-位帮助

时间:2011-07-07 作者:antorome

我想从slug中删除一些字符,比如我们在西班牙语中用来打开问题的“?”。

如果我转到wp includes/formatting。php和in

function sanitize_title_with_dashes($title)
行820 wp32I添加此

$title = str_replace(\'¿\', \'\', $title);
就在$title=preg\\U replace(“|%([a-fA-F0-9][a-fA-F0-9])|\',“--$1--\',$title)之前;

它工作正常。所以当我写标题“Quétal?”鼻涕虫是“que tal”

现在,如何使用函数,以便我可以通过函数使用它。php或通过插件??

我正在这样做,但不起作用

function limpiar_slug($slug)
{
    $slug = str_replace(\'¿\', \'\', $slug);
    return $slug;
}

add_filter(\'sanitize_title_with_dashes\', \'limpiar_slug\');
有什么建议吗???

提前感谢

2 个回复
SO网友:t31os

下面是我对你的问题的评论。

解决方案是将您自己的过滤器挂接到相同的函数上sanitize_title_with_dashes 是的,在这种情况下,我想你只是想sanitize_title 与之前一样sanitize_title_with_dashes.

只需确保您在sanitize_title_with_dashes, 以默认优先级10连接。

例如:。

add_filter(\'sanitize_title\', \'limpiar_slug\', 11 );
无需破解核心文件。

EDIT BELOW:

您可以尝试一些正则表达式,下面是一个示例,代码改编自Adriana Villafañe的代码,以响应Regular expression - any text to URL friendly one 在StackOverflow上。

add_filter( \'sanitize_title\', \'sanitize_title_extra\' );

function sanitize_title_extra( $title ) {

    $friendlyURL = htmlentities($title, ENT_COMPAT, "UTF-8", false); 
    $friendlyURL = preg_replace(\'/&([a-z]{1,2})(?:acute|lig|grave|ring|tilde|uml|cedil|caron);/i\',\'\\1\',$friendlyURL);
    $friendlyURL = html_entity_decode($friendlyURL,ENT_COMPAT, "UTF-8"); 
    $friendlyURL = preg_replace(\'/[^a-z0-9-]+/i\', \'-\', $friendlyURL);
    $friendlyURL = preg_replace(\'/-+/\', \'-\', $friendlyURL);
    $friendlyURL = trim($friendlyURL, \'-\');
    $friendlyURL = strtolower($friendlyURL);
    return $friendlyURL;

}
似乎可以清除一些不需要的字符,随意调整,等等。。。

SO网友:Javier Villanueva

问题是函数sanitize_title_with_dashes 不使用过滤器(我认为这很奇怪),所以如果不修改格式,就无法更改它。php文件直接:(

结束

相关推荐

Retrieve single term slug

我正在为不同的帖子类型创建通用的“单标签页”我正在使用下一个代码:$loop = new WP_Query( array( \'post_type\' => \'any\', \'tag\' => single_term_title( \'\', false ), \'posts_per_page\' => 10 ) ); while ( $loop->have_posts() ) : $loop->the_post(); ?> <div cl