您可以使用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
在数据库中插入/更新帖子之前,会触发过滤器挂钩,无论帖子是插入还是更新,都会触发过滤器挂钩。你可以检查它是否是一个新帖子,如果必要的话,只在这个条件下运行。
如果需要,您还可以检查帖子类型,或者检查任意数量的条件,因为您基本上拥有即将插入的帖子。