如何从unctions.php引用wp_NAV_MENU()的参数数据

时间:2019-01-08 作者:klewis

我真的希望保持我的模板文件尽可能干净,而不包括太多的参数数据。以下示例是否可能。。。

   $args = array(
      \'theme_location\' => \'main-menu\',
      \'menu_class\' => \'list-inline\',
      \'add_li_class\'  => \'list-inline-item\'
   );

   wp_nav_menu($args);  
。。。我可以将参数数组存储在函数中的函数中。php文件,然后简单地将参数数据调用到我的头中。php我的wp\\u nav\\u menu()所在的位置?如果我错了,请随时纠正我的错误,但这是我针对这个特定情况使用add\\u操作/do\\u操作的好时机吗?

我想使用我的函数。php文件作为一站式服务(即注册nav,向同一nav添加基本或高级参数数据等)。

这是我第一次考虑这个问题,所以我完全支持任何最佳实践。

非常感谢!

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

这样的函数:

function get_nav_args($overrides = array()) {
    $defaults = array(
        \'theme_location\' => \'main-menu\',
        \'menu_class\' => \'list-inline\',
        \'add_li_class\'  => \'list-inline-item\',
    );
    return shortcode_atts($defaults, apply_filters(\'some_custom_identifier_nav_menu_args\', $overrides, $defaults) );
}
可以打电话wp_nav_menu(get_nav_args())

使用短码ATT并允许传入覆盖数组,将允许您在必要时更改值,而无需复制整个内容。至于你把一切都放在功能上。如果可能的话,我会避免这种情况。使用includerequire 包含包含函数的文件。通过这种方式,你可以根据类型、用途、位置或任何你喜欢的东西来对它们进行分类,而不会在一个巨大的文件中寻找任何东西。

SO网友:EGWorldNP

For 1st phase answer :
此功能也将起作用:

if( !function_exists( \'menu_args\' ) ) {

   function menu_args() {
    $args = array(
                \'theme_location\' => \'main-menu\',
                \'menu_class\' => \'list-inline\',
                \'add_li_class\'  => \'list-inline-item\',
            );
    return $args;
    } }
定义函数后,可以通过以下方式调用它:

wp_nav_menu( menu_args() );
For 2nd phase answer :
功能。php是wordpress的基本文件,它并不意味着在同一个文件中拥有所有主题函数、标记/元标记函数或自定义元、注册和定义自己的函数等<对于初学者阶段,最好只使用函数。但是如果你想在专业水平上编写代码,你必须知道如何组织文件。您可以使用includerequire 根据要求纳入不同的文件

我的建议是,为不同类型的函数创建不同的文件,就像您可以创建主题函数一样。与主题、模板函数相关的php。php用于模板一等等。您可以根据需要方便地将其包含到文件夹或其他文件夹中

您必须维护文件和文件夹的层次结构,这样即使在时间间隔过后,您也不会对查找代码感到困惑。

相关推荐

用标准的干净文件替换NAV-menus.php文件?

我是一个自学成才的wordpress网站设计师,请原谅我的无知。我为一个客户开发的几个网站最近被一个印尼黑客组织破坏了(很有趣!)。客户端没有更新wordpress安装和其他一些危及安全的事情。遗憾的是,没有网站的清理备份。网络主机给了我一个包含恶意软件扫描结果的文本文件。看起来很多受影响的文件都是导航菜单。网站的php文件。文本文件中显示的扫描结果示例如下:“[主目录]/[网站文件夹名称]/wp includes/nav-menu.php:SL-php-INJECTOR-1-ejw.UNOFFICIAL