我已成功地使用从插件页面隐藏我的插件$wp_list_table
然而,顶部的分页仍然将插件列为“所有(3)”等。
我成功地改变了$wp_list_table
的数组_pagination_args = total_items
.
但它仍然在页面顶部呈现插件-“全部(3)”。
有什么办法可以解决这个问题吗?
我找到了WP_Plugins_List_Table::prepare_items()
具有全局$totals
变量,但我不确定我将如何改变这一点,
在这个函数中
$totals = array();
foreach ( $plugins as $type => $list )
$totals[ $type ] = count( $list );
我所要找的就是在它呈现在页面上之前获得插件总数和-1。
SO网友:bueltge
这些值没有任何钩子来更改这一点。然而,通过Javascript很容易识别计数器。您可以使用短行Javascript来更改这一点。
钩子
你应该在这个页面钩子插件页面的钩子
admin_footer-plugins.php
, 喜欢
add_action( \'admin_footer-plugins.php\', [ $this, \'change_view_values\' ], 11 );
函数包括javascript,例如must-use
计数,但您应该只更改插件计数器的选择器。小提示,php变量$this->mustuse_total
是我新伯爵的店铺。您应该用count来替换它,这是一个获取插件数量的函数。
/**
* Change total count for must use values
*
* @since 01/09/2014
* @return void
*/
public function change_view_values() {
$current_screen = get_current_screen();
if ( null === $current_screen || \'plugins-network\' !== $current_screen->id ) {
return;
}
$item = sprintf( _n( \'item\', \'items\', $this->mustuse_total ), number_format_i18n( $this->mustuse_total ) ); ?>
<script type="text/javascript">
jQuery( document ).ready( function($) {
let text,
value,
mustuse,
selector;
// replace the brackets and set int value
selector = \'.mustuse span\';
text = $( selector ).text();
value = text.replace( \'(\', \'\' );
value = parseInt( value.replace( \')\', \'\' ) );
// replace and add strings
mustuse = value + <?php echo $this->mustuse_total; ?>;
$( selector ).replaceWith( \'(\' + mustuse + \')\' );
mustuse = mustuse + \' <?php echo esc_attr( $item ); ?>\';
if ( document.URL.search( /plugin_status=mustuse/ ) !== - 1 ) {
$( \'.tablenav .displaying-num\' ).replaceWith( mustuse );
}
} );
</script>
<?php
}
此代码当前正在使用中
mu-plugin loader -
https://github.com/bueltge/must-use-loader/blob/master/must_use_loader.php#L290Sreenshot说得更多在我的上下文中,我更改了必用计数器,通过下图更容易理解。