对象内的WP_NAV_MENU--如何处理FLABACK_CB?

时间:2013-12-30 作者:Pat J

我正在尝试创建一个类,它允许我生成导航菜单。以下是我使用的简化版本:

class PJ_Menu {
    function make_menu() {
        $args = array(
            \'theme_location\' => \'location\',
            \'fallback_cb\' => array( $this, \'pj_page_menu\' ),
        );
        wp_nav_menu( $args );
    }
    function pj_page_menu() {
        // a bunch of code here
    }

}
new PJ_Menu();
我似乎不知道我需要什么fallback_cb 参数array( $this, \'pj_page_menu\' ); 没用,也没用\'self::pj_page_menu\'. 我是否遗漏了一些明显的东西,或者是不可能做到这一点?

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

这个fallback_cb 参数在菜单不存在时使用,即没有正确名称的菜单时。否则我不会被利用。Check the Codex. 默认情况下,回退是wp_page_menu.

在我看来,您的代码使用类方法作为回调是正确的,但我怀疑您真正想要的是walker 参数,而不是fallback_cb 一这个walker 参数将在创建菜单的任何时候使用,而不仅仅是在出现问题时作为回退。

SO网友:pLiKT

wp_nav_menu 调用PHP的call_user_func 在…上fallback_cb. 要作为该参数传入类方法,该方法需要是静态的,并且需要传入类和方法名称。

static function pj_page_menu() {
    // a bunch of code here
}
来自PHPis_callable 文档fallback_cb 应采用以下形式:

\'fallback_cb\' => array(\'PJ_Menu\', \'pj_page_menu\')
或PHP>=5.2.3

`fallback_cb` => \'PJ_Menu::pj_page_menu\'

结束

相关推荐

Querying Term Posts in Loop

我试图在标题下显示我的CPT类别以及与之相关的任何帖子。我有第一个循环,很好:<?php $cats = get_categories(array(\'taxonomy\' => \'custtax\', \'orderby\' => \'term_group\')); if(!empty($cats)) : foreach($cats as $cat) : ?> <a href=\"<?php