Hook WP_Embed run_shortcode

时间:2015-09-10 作者:MrWu

我想钓run_shortcode 在…内WP_Embed, 但我不知道怎么通过$tag 参数到add_filter

global $wp_embed;
add_filter( \'$wp_embed->run_shortcode\' , \'my_run_shortcode\' , 0);
不要工作。

1 个回复
SO网友:totels

只有当您看到apply_filters, apply_filters_ref_array, do_action, 和do_action_ref_array. 它们基本上都是以相同的方式处理的,但有一些小的区别,比如过滤器总是期望返回值。

e、 g.:

// seeing this in some WordPress code
$the_content = apply_filters( \'the_content\', $the_content );
// means you can then use something like this to modify it
add_filter( \'the_content, function ( $content ) { return $content; } );
您引用的方法中没有直接的函数调用,因此您需要在调用链的上下找到一个应用与您要修改的内容相关的过滤器的位置。

您最好询问如何实现最终目标,而不是询问如何实现这一目标,因为中没有任何过滤器或操作WP_Embed::run_shortcode 或者do_shortcode 它调用或do_shortcode_tagsdo_shortcodes_in_html_tags.

例如,对于嵌入处理程序html输出,有一个过滤器可能足以满足您的需要:

class-wp-embed.php#L171:

...
  return apply_filters( \'embed_handler_html\', $return, $url, $attr );
...
这意味着你可以:

add_filter( \'embed_handler_html\', \'wpse_202291_embed_handler_html\', 1, 3 );
function wpse_202291_embed_handler_html( $return, $url, $attr ) {
  // process $return
  return $return;
}

相关推荐

Do not parse shortcode in CPT

我有一个CPT,我不想在它的内容中解析shortcode(使用\\u content()函数)。我可以使用remove\\u filter删除短代码的默认过滤器。但我如何确定我只是为了我想要的CPT而删除过滤器?我有一个在页面中使用的快捷码[我的自定义快捷码]。此短代码使用WP\\U查询和输出CPT帖子。我不想在这篇CPT文章中分析短代码。我是否应该在短代码解析挂钩之前用虚拟内容更改短代码,并在之后替换回来?或者我应该在我的CPT输出之前删除短代码的默认过滤器,然后在我的CPT输出完成后再次添加短代码的默