功能media_upload_tabs()
未弃用。它仅由调用the_media_upload_tabs()
(我知道,这是一个完美的名字),也只有一次media_upload_header()
...罢工>
Edit - 刚刚用插件测试了过滤器,当它工作时var_dump( $tabs )
在一个附带的回调中弹出标签,它什么也不做。原因似乎是,现在所有这些都是由带有JavaScript的主干和下划线模板生成的。负责所有模板的文件是~/wp-includes/media-template.php
. 从整个搜索过程中,没有任何过滤器可以更改输出。基本上,它只是一个名为wp_print_media_templates()
它包装了所有模板,并且在不同模板之前和之后都有一些操作。
我只是想console.log()
这个wp
对象并找到wp.media.view
这似乎是。。。某物~/wp-includes/js/media-modals.js
似乎是JavaScript生成的所有UI的根。现在当我深入挖掘时,我发现wp.template
得到“下划线”-extend
ed“进入wp.media.template
. 然后我找到了~/wp-includes/js/wp-util.js
这就解释了,JS函数的参数是#id
前缀为tmpl-
.
现在这只是_.memoize()
它添加了一个自定义回调“保存”计算结果以“加快速度”。。。有一点。内容只是一组正则表达式,然后被推送到一个名为compiled()
, 这又是一个包装
_.template( $( \'#tmpl-\' + id ).html(), null, options )
。。好啊还有来自
~/wp-includes/js/media-views.js
和
~/wp-includes/js/media-models.js
因为我对脊梁几乎一无所知,所以我不知道如何从那里开始。我将为这个答案留下我的调试插件,也将这个答案作为其他人的起点。
<?php
defined( \'ABSPATH\' ) or exit;
/**
* Plugin Name: (#125669) Media Upload Tabs by role
* Description: Removes media upload tabs on a by-role base.
*/
add_action( \'admin_footer\', \'wpse125669MediaUploadTabsRemove\', 0 );
function wpse125669MediaUploadTabsRemove()
{
if ( "edit.php" !== get_current_screen()->parent_file )
return;
?>
<script type="text/javascript">
console.log( wp.media );
</script>
<?php
}