项目在中设置wp_nav_menu()
. 您可以使用一个有用的过滤器:\'wp_nav_menu_objects\'
. 它提供以下项目:$sorted_menu_items
以及wp_nav_menu()
呼叫方式$args
.
从…起wp-includes/nav-menu-template.php::wp_nav_menu()
:
$sorted_menu_items = apply_filters( \'wp_nav_menu_objects\', $sorted_menu_items, $args );
所以…
钩住此筛选器,将数据存储在某处,返回$sorted_menu_items
完成所有菜单后,保持不变并打印收集的数据在下面的示例中,我将数据打印到\'shutdown\'
– 这是WordPress发布的最新钩子。
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: T5 Collect Nav Menu Items
* Description: Appends debug information about currently processed nav menu items to pages.
*/
add_filter( \'wp_nav_menu_objects\', array ( \'T5_Nav_Menu_Collector\', \'collect\' ), 99, 2 );
class T5_Nav_Menu_Collector
{
/**
* Stores the data
* @type array
*/
protected static $collection = array ();
/**
* Collect nav menu data.
*
* @wp-hook wp_nav_menu_objects
* @param array $sorted_menu_items
* @param array $args
* @return array $sorted_menu_items Not changed.
*/
public static function collect( $sorted_menu_items, $args )
{
// Since we *know* we have data, we register the print action.
add_action( \'shutdown\', array ( __CLASS__, \'print_collection\' ) );
self::$collection[] = array(
\'args\' => $args,
\'items\' => $sorted_menu_items
);
return $sorted_menu_items;
}
/**
* Dump the collected data.
*
* @wp-hook shutdown
* @return void
*/
public static function print_collection()
{
$output = htmlspecialchars( print_r( self::$collection, TRUE ) );
print "<pre><b>Nav Menu Data</b>\\n\\n$output</pre>";
}
}
如果没有导航菜单,则什么也不会发生。但是,如果我们可以收集一些数据,我们会在文档末尾得到一个很长的列表,其中包含可以在其他过滤器中使用的所有项属性。