如何修改WordPress代码将内容#标签转为Tag时自动去除#符号
修改后的完整代码
function post_published_notification( $ID, $post ) { $content = $post->post_content; // 调整正则捕获组,直接提取#后的标签文本 preg_match_all('/( #(\w+))/', $content, $matches, PREG_PATTERN_ORDER); if(isset($matches[2])){ foreach($matches[2] as $matchKey){ wp_set_post_tags( $ID, trim($matchKey), true); } } } add_action( 'publish_post', 'post_published_notification', 10, 2 );
修改说明
- 原有正则只捕获了包含空格、#、标签文本的完整字符串,我们通过新增一层括号捕获
#后的\w+内容,$matches[2]数组中存储的就是不带#的纯标签文本,直接遍历使用即可。 - 如果你不想调整正则,也可以在原有代码基础上处理匹配结果,修改遍历逻辑即可:
foreach($matches[1] as $matchKey){ // 先去除首尾空格,再删除开头的#符号 $tag = ltrim(trim($matchKey), '#'); wp_set_post_tags( $ID, $tag, true); }
两种方案都能实现需求,优先推荐修改正则的方案,逻辑更清晰性能也更高。
内容的提问来源于stack exchange,提问作者Scotty
相关产品推荐
相关产品推荐

