Answers:
简而言之,我无法给您提供有关如何生成WP块的页面/教程/文档,但是请看一下该sanitize_title()
函数。
不要对函数名称有错误的印象,这并不意味着要清理标题以便进一步用作页面/帖子标题。它接受一个标题字符串并返回它以在URL中使用:
在某些情况下,核心可能还会做其他事情(您必须查看源以验证sanitize_title()
将始终在生成足够正是你所期望的一样),但应至少覆盖99%,如果不是全部,案件。
sanitize_title
功能中应用的过滤器完成,还是在功能运行后是否由其他方法处理。
sanitize_title
需要检查的-filter。但是,还有其他相关功能。我真的不知道这一点。有时似乎SimplePie
比这WP_Rewrite
件事更容易理解。顺便说一句:Toscho致力于将“ Monkeyman Rewrite Analyzer”功能集成到他的插件中。那就是事情开始变得真正有趣的地方。
您可以使用此功能:
static public function slugify($text)
{
// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
// transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
// trim
$text = trim($text, '-');
// remove duplicate -
$text = preg_replace('~-+~', '-', $text);
// lowercase
$text = strtolower($text);
if (empty($text)) {
return 'n-a';
}
return $text;
}
这正是wp url清理功能的工作方式。
除了之外,WordPress 没有内置任何开发人员模式WP_DEBUG
,在这种情况下,它不能为您提供太多帮助。基本上,WP使用“重写API”,它是WP_Rewrite
该类的基于函数的低层包装器,您可以在Codex中进行阅读。的global $wp_rewrite
对象将为您服务,以检查它或与类进行交互。
Toschos“ T5 Rewrite”-插件和Jan Fabrys“ Monkeyman Rewrite Analyzer” -Plugin将为您提供指导。我为“ T5 Rewrite”编写了一个小扩展程序,以使其与“ Monkeyman Rewrite Analyzer”顺利集成,您可以在GitHub的“ T5 Rewrite” repos Wikie 中找到它。
“ Monkeyman”插件会添加一个新页面,该页面位于“ 工具”下的管理UI菜单中。“ T5重写”插件将一个新的帮助选项卡添加到“ 设置” >“ 永久链接”页面。我的扩展程序也将帮助选项卡添加到提到的“ 工具”页面。
这是“ T5 Rewrite”插件帮助标签内容的屏幕快照。
Vorlage =模式| Beschreibung =说明| Beispiele =示例
“ T5 Rewrite”插件可以帮助您检查重写对象,从而完成了出色的工作。而且它做得更多:它增加了新的可能性。因此,它是(至少在我的安装中)基本插件包的一部分。
实际上,如果您查看核心功能wp_insert_post(post.php),您会发现它执行以下操作:
$data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent );
$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
需要注意的关键是同时使用wp_unique_post_slug和sanitize_title:
wp_unique_post_slug( sanitize_title(
原谅继续提出一个老问题,但是我有同样的必要性,因为发现这种方法对我来说是完美的:
$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now
此方法使用双重消毒。
第一个使用该save
模式,其中剥离HTML和PHP标记,并删除重音符号(用非重音符号替换重音字符)。
第二种query
模式确保将所有空格替换为破折号,-
并删除其他标点符号。
希望这对某人有帮助!:)