从插件设置活动导航菜单

时间:2014-01-25 作者:Paul

如果您知道要设置的菜单名称,是否有办法从WordPress插件设置以下选项:enter image description here

我的开发人员说这是不可能的,但我相信各位大师都知道解决这一问题的方法;)

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

您可以使用wp_nav_menu_args 过滤器(Codex reference ) 设置主题位置以使用特定菜单。

Example:

function test_wp_nav_menu_args( $args = \'\' ) {
    // only set menu for the primary navigation menu.
    if ( $args[\'theme_location\'] != \'primary\' ) {
        return $args;
    }
    // change {main-menu} to be the slug of the menu you want to set.
    $args[\'menu\'] = \'main-menu\';
    return $args;
}
add_filter( \'wp_nav_menu_args\', \'test_wp_nav_menu_args\' );

SO网友:Milo

您可以使用get_theme_modset_theme_mod 保存导航菜单位置。

获取位置:

$locations = get_theme_mod( \'nav_menu_locations\' );
var_dump( $locations );
打印:

Array
(
    [primary] => 0
    [secondary] => 0
)
获取现有导航菜单:

$nav_menus = get_terms( \'nav_menu\', array( \'hide_empty\' => true ) );
var_dump( $nav_menus );
打印:

Array
(
    [0] => stdClass Object
        (
            [term_id] => 2
            [name] => Main
            [slug] => main
            [term_group] => 0
            [term_taxonomy_id] => 2
            [taxonomy] => nav_menu
            [description] => 
            [parent] => 0
            [count] => 3
        )
}
设置位置:

$nav_menu_id = $nav_menus[0]->term_id;
$location = \'primary\';
$locations[ $location ] = $nav_menu_id;
set_theme_mod( \'nav_menu_locations\', $locations );

结束

相关推荐

Custom Post Types in plugins?

我一直在想这个。在我现在看到的大多数插件中,它们看起来像CPT,但没有“已发布”链接。他们也不担任职务。它们只是停留在仪表板中的插件,页面和列列表顶部有“添加新”链接,当您单击“编辑”时,可以像在任何其他CPT中一样编辑项目。所以我想知道他们是否是CPT?如果是的话,有没有关于这方面的教程?我正在考虑为我的网站创建一个插件,我想要的是构建一个插件,我可以“添加新项目”,并保存项目(并且可以编辑)。我可以通过短代码调用项目。我知道如何在函数中创建CPT。php和我一直在阅读关于基本插件创建的内容。我似乎找不