Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 插件\操作\链接在WordPress 2.8中不起作用+_Php_Wordpress_Plugins_Settings - Fatal编程技术网

Php 插件\操作\链接在WordPress 2.8中不起作用+

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

我开发了一个带有设置链接的插件,在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=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{