我正在为Wordpress创建一个插件页面。此插件页面包含一个 iframe。但是你建议的 php 方法(而不是 iframe html 方法)也会很好。
问题是此插件页面没有响应。因为此插件页面尚未创建自己的管理菜单。这个插件页面有什么问题?
这是代码:
<?php
/*
Plugin Name: Leo
Plugin URI: http://www.example.com
Description: Blabla
Author: Leo
Version: 1.1
Author URI: http://www.example.com
function schedule() {
?>
<h1>schedule</h1>
<a href="/wp-admin/admin.php?page=schedulesite">Show schedule</a><br />
<?PHP
}
function schedulesite() {
echo "<iframe style="width:100%;height:800px;border=0;"
src="http://www.example.com/schedule.php"></iframe>";
}
function scheduleAddMenu() {
add_menu_page('schedule', 'schedule', 10, __FILE__, 'schedule');
add_submenu_page(__FILE__, 'Show schedule', 'Show schedule', 10, 'schedulesite', 'schedulesite');
}
?>
不确定是否修复了此问题,但您需要更正此函数:
function schedulesite() {
echo "<iframe style="width:100%;height:800px;border=0;"
src="http://www.example.com/schedule.php"></iframe>";
}
将其更改为:
function schedulesite() {
echo '<iframe style="width:100%;height:800px;border=0;"
src="http://www.example.com/schedule.php"></iframe>';
}
字符串周围有双引号 ("),而您应该使用单引号 (')
函数scheduleAddMenu()
永远不会被调用。您只需添加一个语句即可在文件末尾调用它。
如果其他人对 OP 有同样的怀疑,请按照以下步骤操作。
您的文件中有一些拼写错误。
首先,查看标题。您没有关闭注释块。在标头末尾添加一个简单的*/
。它像:
/*
Plugin Name: Leo
Plugin URI: http://www.example.com
Description: Blabla
Author: Leo
Version: 1.1
Author URI: http://www.example.com
*/
其次,在函数schedule()
中,从 href 属性中的 ulr 中删除/wp-admin/
。喜欢这个:
function schedule() {
?>
<h1>schedule</h1>
<a href="admin.php?page=schedulesite">Show schedule</a><br/>
<?php
}
第三,在函数schedulesite()
中,在双引号前添加转义字符。喜欢这个:
function schedulesite() {
echo "<iframe style="width:100%;height:800px;border=0;"
src="http://www.example.com/schedule.php"></iframe>";
}
第四,也是最重要的一点,你需要给menu_admin一个钩子。钩子是整个WordPress核心的一部分。
关于钩子:插件 API/钩子
关于admin_menu钩子:插件 API/操作参考/管理菜单
因此,在插件的末尾添加一个简单的钩子,如下所示:
add_action('admin_menu', 'scheduleAddMenu');
您的插件将能够工作!
注意:也许,您需要转到插件页面并激活您的插件!