我已经重新措辞,使其更有意义。
好的,我有一个插件,它使用远程服务来检查更新,很像默认的WordPress插件,在这种情况下,它只检查XML文件。
我想显示这样的菜单气泡 更新可用时。
它可以只显示“1”或类似“警报”的文本,这无关紧要。
因为我的插件使用选项页(使用add_options_page
) 插件设置显示在默认的“设置”子菜单下。
我想我需要添加以下CSS来显示气泡,
<span class=\'update-plugins count-1\' title=\'title\'><span class=\'update-count\'>1</span></span>
并与全球
$submenu
. 问题是我不能为菜单使用硬编码的数组值,因为每个站点都有不同的值。
所以我不能使用$submenu[80][10] .= <span class=\'update-plugins count-1\' title=\'title\'><span class=\'update-count\'>1</span></span>
我如何才能找到我的插件子菜单值,我是否必须循环遍历数组并匹配字符串值?
而且,即使我硬编码了这些值,也无法显示气泡。
//adding plugin to menu
add_action(\'admin_menu\', \'sec_plugin_checker\');
function sec_plugin_checker() {
add_options_page(\' Plugin Checker\', \'Plugin Check\', \'activate_plugins\',
\'sec_plugin_check\', \'sec_checker\');
// the conditional where I want the bubble to appear
if (!empty($matches)){
echo "Match found !<br />";
global $submenu;
foreach( $submenu as $item ) {
$item[41][20] = sprintf( __( \'Updates %s\', \'sec_plugin_checker\' ),
"<span class=\'update-plugins count-1\' title=\'title\'>
<span class=\'update-count\'>1</span></span>");
}
}
这是一个
var_dump($submenu);
看起来像是,
["options-general.php"]=>
array(9){
...
[41]=>
array(4) {
[0]=>
string(20) "Plugin Check"
[1]=>
string(16) "activate_plugins"
[2]=>
string(21) "sec_plugin_check"
[3]=>
string(23) " Plugin Checker"
...
}
最合适的回答,由SO网友:Jan Fabry 整理而成
你打电话的时候我会这么做add_options_page()
, 不迟。最好使用受支持的API,而不是使用内部结构。
插件更新程序定期检查插件状态,然后将结果保存在瞬态中。这意味着it only reads this cached status 创建菜单时,它不会对每个页面加载进行完全检查。您可以执行类似的操作:
add_action( \'admin_menu\', \'wpse15567_admin_menu\' );
function wpse15567_admin_menu()
{
$warnings = get_transient( \'wpse15567_warnings\' );
$warning_count = count( $warnings );
$warning_title = esc_attr( sprintf( \'%d plugin warnings\', $warning_count ) );
$menu_label = sprintf( __( \'Plugin Checker %s\' ), "<span class=\'update-plugins count-$warning_count\' title=\'$warning_title\'><span class=\'update-count\'>" . number_format_i18n($warning_count) . "</span></span>" );
add_options_page( \'Plugin Check\', $menu_label, \'activate_plugins\', \'sec_plugin_check\', \'sec_checker\' );
}
执行实际警告检查时,将结果保存在瞬态中,以便稍后读取:
if ( ! empty( $matches ) ) {
set_transient( \'wpse15567_warnings\', $matches );
}
请注意,在没有警告的情况下,我不会执行任何特殊操作。气泡不会显示,因为它获取了类
count-0
,
which has display: none
in the css.
SO网友:revive
或者类似的东西-根据需要进行调整:(1)为重力表单添加菜单项,2)显示数组中所有未读表单ID的计数。您可以使用特定表单的子菜单页扩展此功能,如果需要,还可以使用它们自己的计数。
add_action( \'admin_menu\', \'register_my_custom_menu_page\' );
// let\'s build the function
function register_my_custom_menu_page() {
$search_criteria = array(
\'status\' => \'active\', // Active forms
\'field_filters\' => array( // which fields to search
array(
\'key\' => \'is_read\', \'value\' => false, // let\'s just get the count for entries that we haven\'t read yet.
)
)
);
// Add the form IDs to the array below, the parent menu will show ALL unread entries for these forms
// NOTE: you can get counts for whatever you\'re wanting and change the value of $notification_count below accordingly.
$notification_count = GFAPI::count_entries( array(1,4,5,6,11,13), $search_criteria );
add_menu_page(
\'Full Quote Form submissions\', // Page Title
$notification_count ? sprintf( \'Quotes <span class="awaiting-mod">%d</span>\', $notification_count ) : \'View Quotes\',
\'manage_options\', // Capabilities
\'admin.php?page=gf_entries&id=13\', // menu slug
\'\', // callback function
\'dashicons-format-aside\', // icon URL
6 // position
);
}