这些参数是在哪里定义的?

时间:2013-11-06 作者:ironsand

我想制作两行navi,并找到了此代码。

add_filter(\'walker_nav_menu_start_el\', \'description_in_nav_el\', 10, 4);

function description_in_nav_el($item_output, $item, $depth, $args)
{
    return preg_replace(\'/(<a.*?>[^<]*?)</\', \'$1\' . "<span>{$item->post_content}</span><", $item_output);
}

http://pastebin.com/Fw3e0wqC

这些争论从何而来$item_output$item?我知道$item_output 是nav\\u menu html source,$item是nav\\u menu,但我不知道html是在哪个函数中生成的。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

你应该看看owWordPress Plugin Api 作品

添加筛选器时,挂接到该筛选器的函数将从函数接收参数:apply_filters.

此函数至少传递一个参数,但可以传递更多参数,并且始终显示返回的值。

所以如果你能写

add_filter( \'walker_nav_menu_start_el\', \'description_in_nav_el\', 10, 4 );
是因为代码中的某个地方有一行类似于:

$output .= apply_filters( \'walker_nav_menu_start_el\', $item_output, $item, $depth, $args );
因此,可以使用的参数通过apply_filters 它们是在包含该行的函数中生成的。

当你想了解更多关于钩子的知识时,首先要看的地方是Codex,然而并不是所有的钩子都能在那里找到,在这种情况下,最好的地方是lookcode.

我认为您使用软件来编写代码,而且该软件很可能在文件夹中的所有文件中都有搜索功能,所以一旦您知道要搜索什么:

应用过滤器(\'walker\\u nav\\u menu\\u start\\u el\'

你自己试试,你会找到文件的/wp-includes/nav-menu-template.php at line 169 只包含我上面发布的行,在方法内部start_el 班级的Walker_Nav_Menu.

如果您熟悉并使用任何Unix,那么使用起来当然会更轻松grep, 但在这种情况下,你已经知道了

结束

相关推荐

Wordpress Navigation

我的菜单html代码如下:<div class=\"menu\"> <ul> <li><a href=\"index.php\" >Home</a></li> <li><a href=\"aboutus.php\" >About Us</a></li> <li><a href=\