Php 插件\操作\链接在WordPress 2.8中不起作用+
我开发了一个带有设置链接的插件,在WordPress 2.7中运行良好。版本2.8带来了一些额外的安全功能,这些功能会导致设置链接显示以下消息:您没有足够的权限访问此页面 这是我用来创建链接的API挂钩:Php 插件\操作\链接在WordPress 2.8中不起作用+,php,wordpress,plugins,settings,Php,Wordpress,Plugins,Settings,我开发了一个带有设置链接的插件,在WordPress 2.7中运行良好。版本2.8带来了一些额外的安全功能,这些功能会导致设置链接显示以下消息:您没有足够的权限访问此页面 这是我用来创建链接的API挂钩: function folksr_plugin_action($links, $file) { if (strstr($file, 'folksr/folksr.php')) { $fl = "<a href=\"options-general.php?page=f
function folksr_plugin_action($links, $file) {
if (strstr($file, 'folksr/folksr.php')) {
$fl = "<a href=\"options-general.php?page=folksr/settings.php\">Settings</a>";
return array_merge(array($fl), $links);
}
return $links;
}
add_filter('plugin_action_links', 'folksr_plugin_action', 10, 2);
完整的源代码可在
设置屏幕不包含任何附加逻辑,只是几个选项和HTML回显到屏幕上
令人惊讶的是,Codex并没有返回任何搜索短语插件\动作\链接。您能提供示例或指向插件菜单中设置链接的工作代码吗?我在2.8+版本的插件上有工作管理菜单链接。我的函数如下所示:
function plugin_action_links( $links, $file ) {
if ( $file == plugin_basename(__FILE__) )
$links[] = '<a href="' . admin_url( 'options-general.php?page=lj-longtail-seo/lj-longtail-seo.php' ) . '">Settings</a>';
return $links;
}
我的add_过滤线基本相同。我认为首先要尝试的是添加admin_url函数的使用
希望有帮助。我在2.8+版本的插件上有“工作管理”菜单链接。我的函数如下所示:
function plugin_action_links( $links, $file ) {
if ( $file == plugin_basename(__FILE__) )
$links[] = '<a href="' . admin_url( 'options-general.php?page=lj-longtail-seo/lj-longtail-seo.php' ) . '">Settings</a>';
return $links;
}
我的add_过滤线基本相同。我认为首先要尝试的是添加admin_url函数的使用
希望能有所帮助。我通过分析一些随机插件的来源,找到了解决我自己问题的方法。我必须说——那是多么不愉快的经历啊!但是,嘿,这是解决办法 事实证明,为了构建设置链接,需要先注册它。以下代码是一个执行此操作的存根:
class MyPlugin {
public function __construct() {
add_filter('plugin_action_links', array($this, 'renderPluginMenu'), 10, 2);
add_action('admin_menu', array($this, 'setupConfigScreen'));
}
public function renderPluginMenu() {
$thisFile = basename(__FILE__);
if (basename($file) == $thisFile) {
$l = '<a href="' . admin_url("options-general.php?page=MyPlugin.php") . '">Settings</a>';
array_unshift($links, $l);
}
return $links;
}
public function setupConfigScreen() {
if (function_exists('add_options_page')) {
add_options_page('MyPlugin settings', 'MyPlugin', 8, basename(__FILE__), array($this, 'renderConfigScreen'));
}
}
public function renderConfigScreen() {
include dirname(__FILE__) . '/MyPluginSettings.php';
}
}
我通过分析一些随机插件的来源,找到了解决我自己问题的方法。我必须说——那是多么不愉快的经历啊!但是,嘿,这是解决办法 事实证明,为了构建设置链接,需要先注册它。以下代码是一个执行此操作的存根:
class MyPlugin {
public function __construct() {
add_filter('plugin_action_links', array($this, 'renderPluginMenu'), 10, 2);
add_action('admin_menu', array($this, 'setupConfigScreen'));
}
public function renderPluginMenu() {
$thisFile = basename(__FILE__);
if (basename($file) == $thisFile) {
$l = '<a href="' . admin_url("options-general.php?page=MyPlugin.php") . '">Settings</a>';
array_unshift($links, $l);
}
return $links;
}
public function setupConfigScreen() {
if (function_exists('add_options_page')) {
add_options_page('MyPlugin settings', 'MyPlugin', 8, basename(__FILE__), array($this, 'renderConfigScreen'));
}
}
public function renderConfigScreen() {
include dirname(__FILE__) . '/MyPluginSettings.php';
}
}
添加管理员url没有帮助。我怀疑这可能与我的设置屏幕位于单独的文件中这一事实有关。添加管理员url没有帮助。我怀疑这可能与我的设置屏幕位于单独的文件中有关。您的函数renderPluginMenu缺少两个参数,应该是:renderPluginMenu$links,$file{您的函数renderPluginMenu缺少两个参数,应该是:renderPluginMenu$links,$file{