我有一个显示菜单的短代码:
//menu categories shortcode
function menu_categories_shortcode( $atts, $content = null ){
extract( shortcode_atts( array(
'menu' => ''
), $atts ) );
ob_start();
wp_nav_menu(array(
'menu' => $menu,
'container' => 'ul',
'container_class' => 'sidebar-categories',
'items_wrap' => '%3$s',
'depth' => 1
));
$content = ob_get_contents();
ob_end_clean();
return $content;
}
add_shortcode('menu-categories', 'menu_categories_shortcode');
现在,我想将菜单短代码的短代码按钮添加到TinyMCE,客户可以选择他们想要显示的菜单。
例如:在主页上,客户希望显示菜单名称为菜单1的菜单,因此短代码将为:[menu-categories menu="Menu 1"]
当客户点击菜单短代码按钮时,会弹出所有菜单的下拉菜单,客户可以选择他们想要的菜单。
这是我的js来调用菜单弹出窗口:
(function() {
tinymce.create('tinymce.plugins.menuPlugin', {
init: function(ed, url) {
// Register commands
ed.addCommand('mcebutton', function() {
ed.windowManager.open({
file: url + '/menu_popup.php',
width: 220 + parseInt(ed.getLang('button.delta_width', 0)),
height: 240 + parseInt(ed.getLang('button.delta_height', 0)),
inline: 1
}, {
plugin_url: url
});
});
// Register buttons
ed.addButton('menu_button', {
title: 'Choose Menu',
cmd: 'mcebutton',
image: url + '/icon.gif'
});
},
});
tinymce.PluginManager.add('menu_button', tinymce.plugins.buttonPlugin);
})();
我在menu_popup.php
的问题,如何获得所有菜单?
我的menu_popup.php
文件:
<form action="/" method="get" accept-charset="utf-8">
<div>
<label for="button-url">Choose Menu</label>
<?php $menus = get_registered_nav_menus();
if($menus) : ?>
<select id="button-url">
<?php
foreach ($menus as $key => $menu) : ?>
<option value="<?php echo $menu; ?>"><?php echo $menu; ?></option> <?php endforeach; ?>
</select>
<?php endif; ?>
</div>
<div>
<a href="javascript:ButtonDialog.insert(ButtonDialog.local_ed)" id="insert" style="display: block; line-height: 24px;">Insert</a>
</div>
</form>
我有错误:
非常感谢!!!
答案 0 :(得分:1)
在menu_poup.php
中,您需要包含此代码:
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');
访问WordPress功能。我只是尝试使用你的代码,它工作。