发布帖子时将快捷码转换为hrml

时间:2015-01-26 作者:skillguru

我正在wordpress中使用快捷码创建帖子。当用户查看post时,通过从数据库中提取数据来显示数据。但我们也会在帖子发布时向用户发送电子邮件。在这篇文章中,我们发送了链接和内容。但在这种情况下,发送的是shortcode函数,而不是数据。

我正在写一篇关于即将袭击东海岸的暴风雪的文章。

[myshorcode param1=“aa”param2=“bb”]

如何解决这个问题?

1 个回复
SO网友:David Gard

您可以使用pre_post_update 过滤器挂钩来实现这一点。

不幸的是Codex 对于这个钩子来说不是很好,但它非常简单,可以在中找到wp-includes/post.php 在线3335(WP 4.1)。

add_filter( \'pre_post_update\', \'my_replace_shortcode\', 2, 99 );
function my_replace_shortcode( $post_id, $data ){

    if(strpos($data[\'post_content\'], \'[myshorcode param1="\') !== false) :
        $data[\'post_content\'] = do_shortcode(\'[myshorcode param1="aa" param2 = "bb"]\');
    endif;

    return $data;

}
这里发生的事情是检查post_content 部分帖子包含[myshorcode param1=" (仅检查此处作为的值param1 将发生变化),如果发生变化post_content 替换为您的短代码的结果。

这个pre_post_update 在数据库中插入/更新帖子之前,会触发过滤器挂钩,无论帖子是插入还是更新,都会触发过滤器挂钩。你可以检查它是否是一个新帖子,如果必要的话,只在这个条件下运行。

如果需要,您还可以检查帖子类型,或者检查任意数量的条件,因为您基本上拥有即将插入的帖子。

结束

相关推荐

Remove echo from shortcode

我刚刚开始使用短代码,由于缺乏php知识,我无法想出如何在不使用php echo的情况下使用此短代码。有人能帮我修改代码吗?// SPONSORS Shorcode function sponsors_shortcode($atts) { extract(shortcode_atts(array( \"name\" => \"sponsors\", ), $atts)); $args = array( \"