如何仅在POST保存和更新时处理快捷码

时间:2012-03-20 作者:JasonDavis

下面是一个简单的短代码,我可以在文章中简单地将关键字链接到tag taxonomy 我的网站中的页面。

所以如果我要结束这个学期Web Service 像这样[taglink]Web Service[/taglink]

然后,下面的函数将用- 制作Web-Service 那将是我的tag taxonomy 这样我就可以链接到那个页面了。

This...
[taglink]Web Service[/taglink]

Becomes this...
<a href="/tag/web-service" title="Web Service tagged articles">Web Service</a>

The code

function taglink_func($atts, $tag=\'\') {
    $formattedTag = str_replace(\' \', \'-\', $tag);
    $formattedTag = strtolower($formattedTag);
    return \'<a href="/tag/\' .$formattedTag. \'" title="\' .$tag. \' tagged articles">\' .$tag. \'</a>\';
}
add_shortcode(\'taglink\', \'taglink_func\');
此解决方案运行得相当好,但为了进一步提高性能,我希望在创建新文章和编辑文章时运行此功能,因此基本上只有在保存文章时,我才希望在文章中的任何标记上运行此功能,然后替换[taglink]Web Service[/taglink] 在实际数据库中显示结果。

因此,它将在页面保存时运行,而不是在每个页面视图上运行,并用URL链接简单地替换数据库中的代码。

有人知道我怎么做吗?

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

如果要在用户保存帖子时修改内容,则需要使用the save_post hook.

在该函数中,您可以使用get_shortcode_regex 这将为您提供该帖子中使用的短代码和属性。

(但是,如果您希望在用户保存时而不是在显示内容时处理内容,那么您可能不需要注册短代码即可开始。只需使用save\\u post挂钩并使用您自己的正则表达式处理短代码即可。)

SO网友:soulseekah

您可以使用save_poststatus_to_statusnew_status_post_type 钩子来完成这一点。

一个更简单的解决方案是使用get_the_tags 改为在主题文件中。甚至wp_get_object_terms 如果需要输出的标记与文章的实际标记不同,请使用自定义分类法。

结束

相关推荐

Run shortcode before filters

我的用户在注释中发布代码片段。我为此创建了一个快捷码:function post_codigo($atts,$content=\"\"){ return \'<code>\'.$content.\'</code>\'; } add_shortcode(\'codigo\',\'post_codigo\'); 问题是html在打包到代码标记之前会被过滤掉。我想如果我能在过滤器之前运行短代码,那么我可以使用fun