我正在创建一个插件,它创建了几个虚拟页面,我希望这些链接可以在菜单管理页面中使用,让用户可以自由地将它们添加为他们创建菜单。WordPress的:在管理菜单页面添加元框
我想在菜单管理中添加一个元框,与页面/类别元框非常相似,以便让用户选择要在菜单中添加的页面。
我正在创建一个插件,它创建了几个虚拟页面,我希望这些链接可以在菜单管理页面中使用,让用户可以自由地将它们添加为他们创建菜单。WordPress的:在管理菜单页面添加元框
我想在菜单管理中添加一个元框,与页面/类别元框非常相似,以便让用户选择要在菜单中添加的页面。
显然,唯一可能的研究是核心本身。
这里,/wp-includes/nav-menu.php
,我们可以得到如何插入元框:
add_action('admin_init', 'so_13875144_nav_menu_meta_box');
function so_13875144_nav_menu_meta_box() {
add_meta_box(
'my-custom-nav-box',
__('Custom Box'),
'so_13875144_display_menu_custom_box',
'nav-menus',
'side',
'default'
);
}
function so_13875144_display_menu_custom_box() {
/* Not sure about this global var */
//global $_nav_menu_placeholder;
//$_nav_menu_placeholder = (0 > $_nav_menu_placeholder) ? intval($_nav_menu_placeholder) - 1 : -1;
?>
<p id="menu-item-custom-box">
<label class="howto" for="custom-menu-item-custom-box">
<span><?php _e('URL'); ?></span>
<input id="custom-menu-item-custom-box" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-custom-box]" type="text" class="code menu-item-textbox" value="my text" />
</label>
</p>
<?php
}
但,困难的部分,我还没有管理做工作,就是为了保存价值。
这是需要研究的文件/wp-admin/nav-menus.php
。
试图挂接到行动wp_update_nav_menu
,但自定义元框输入字段没有被传递到$_POST
。
WordPress的答案可能有一些提示:https://wordpress.stackexchange.com/search?q=wp_update_nav_menu
http://codex.wordpress.org/Function_Reference/add_meta_box
使用post_type '导航菜单'
我知道我迟到了,但只是为别人试图做到这一点...
b__是正确的,那就是途径让它显示在页面上,除了它比任何其他字段更容易使用复选框,因为有一个内置的JavaScript函数,用于查找复选框。
所有你需要做的是从现有的复选框复制HTML -
<li><label class="menu-item-title"><input type="checkbox" class="menu-item-checkbox" name="menu-item[-1][menu-item-object-id]" value="2"> Sample Page</label><input type="hidden" class="menu-item-db-id" name="menu-item[-1][menu-item-db-id]" value="0"><input type="hidden" class="menu-item-object" name="menu-item[-1][menu-item-object]" value="page"><input type="hidden" class="menu-item-parent-id" name="menu-item[-1][menu-item-parent-id]" value="0"><input type="hidden" class="menu-item-type" name="menu-item[-1][menu-item-type]" value="post_type"><input type="hidden" class="menu-item-title" name="menu-item[-1][menu-item-title]" value="Sample Page"><input type="hidden" class="menu-item-url" name="menu-item[-1][menu-item-url]" value=""><input type="hidden" class="menu-item-target" name="menu-item[-1][menu-item-target]" value=""><input type="hidden" class="menu-item-attr_title" name="menu-item[-1][menu-item-attr_title]" value=""><input type="hidden" class="menu-item-classes" name="menu-item[-1][menu-item-classes]" value=""><input type="hidden" class="menu-item-xfn" name="menu-item[-1][menu-item-xfn]" value=""></li>
但给他们每人一个唯一的ID,并把您的详细资料在URL,标题等
然后,添加一个提交按钮在结束添加到菜单 -
<input type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e('Add to Menu'); ?>" name="YOUR NAME" id="YOUR ID" onclick="(function(){$('#THE DIV YOU HAVE PUT YOUR LIST IN').addSelectedToMenu(api.addMenuItemToBottom);})"/>
而且应该将项目添加到列表中。
@brasofilo Mate,我不会发布在SO上,没有一点研究,我已经通过网络查找了解决我的问题的方案,我通常收到的解决方案有助于将meta盒添加到POST/PAGE管理中在WP中,而不是导航菜单 –
我误解了问题并做了一个不恰当的评论,我的道歉。 – brasofilo