只有当您看到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_tags
和do_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;
}