admin\\u菜单挂钩不是用来显示菜单的,它实际上是菜单构造过程的一部分,用于准确了解菜单中的内容,这是您应该调用以下函数的地方add_submenu_page
. 因此,当启动此操作时,尚未打印任何内容,也没有头部/身体标签。
但即使这样,我也不知道你的代码是如何工作的。第二个函数试图通过AJAX预先编写代码,但它在Javascript代码中间调用了一个PHP变量。要想让它起作用,需要密码赋予某种超自然的精神力量。JQuery代码不了解PHP变量。
但是,如果说它确实有那些超自然的精神力量,或者说一位谷歌工程师带着soem魔术技术出现,让你的javascript进入PHP进程的内存(该进程在页面加载完成后已经退出),那么我们就有了一个全新的问题。
您试图使用变量$menuprofile,但该变量未在任何地方声明。,如果它被宣布,它将包含什么?它不包含菜单配置文件html,它将echo输出到前端,它没有放入一个名为$menuprofile
.
请记住,代码中的所有内容都是有原因的,都是按特定顺序排列的,都是有特定原因的,如果您不知道为什么要在其中添加“echo”,那么您应该仔细阅读,因为您可能会花更多时间在复制粘贴随机内容上,因为这样做很可能会失败。
因此,让我们从JS代码开始:
function profile_script() {
echo \'<script type="text/javascript">
/* <![CDATA[ */
(function($) {
var menuprofile = ?; // where do we get this value from?
$("#adminmenu").prepend(menuprofile);
})(jQuery);
/* ]]> */
</script>\';
}
add_action( "admin_footer", \'profile_script\' );
我们需要从某处获取menuprofile,我们有两种选择:
将代码作为js字符串回显,并在js中创建html元素,然后在PHP中回显,然后使用JQuery抓取元素并将其移动到正确的位置,我将使用第二个选项作为示例:
function profile_script() {
echo \'<div id="example>Hello World</div>";
echo \'<script type="text/javascript">
/* <![CDATA[ */
(function($) {
var menuprofile = $("#example"); // grab that html element from before
$("#adminmenu").prepend(menuprofile);
})(jQuery);
/* ]]> */
</script>\';
}
add_action( "admin_footer", \'profile_script\' );
您还应该为函数命名名称,或者至少为它们添加前缀,以防止与编写具有相同命名思想的函数的其他人发生冲突。您还应该等待DOM就绪:
function wpse73532_profile_script() {
echo \'<div id="example>Hello World</div>";
echo \'<script type="text/javascript">
/* <![CDATA[ */
jQuery(document).ready(function(){
var menuprofile = jQuery("#example"); // grab that html element from before
jQuery("#adminmenu").prepend(menuprofile);
});
/* ]]> */
</script>\';
}
add_action( "admin_footer", \'wpse73532_profile_script\' );
相反,您是否考虑过修改管理栏?还有,当菜单被折叠时,您会怎么做?或者如果CSS和菜单布局在未来版本的WordPress中发生变化?
免责声明:本回答中使用了大量讽刺,但无意冒犯