2009-10-16 4 views
1

WordPress 2.7에서 제대로 작동하는 설정 링크가있는 플러그인을 개발했습니다. 버전 2.8은 설정 링크 표시 메시지를 유발하는 몇 가지 추가 보안 기능을 제공합니다.이 페이지에 액세스 할 수있는 권한이 없습니다. plugin page에서 사용할 수plugin_action_links이 (가) WordPress 2.8 이상에서 작동하지 않습니다.

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); 

전체 소스 코드 :

내가 링크를 만드는 데 사용하는 API 후크입니다.

설정 화면에는 추가 논리가 포함되지 않고 몇 가지 옵션과 HTML 만 화면에 표시됩니다.

충분하게, Codex는 검색 구문 "plugin_action_links"에 대해 아무 것도 반환하지 않습니다. 예제를 제공하거나 플러그인 메뉴의 설정 링크에 대한 작업 코드를 가르쳐 주시겠습니까?

답변

3

일부 임의의 플러그인 소스를 분석하여 내 자신의 문제에 대한 해결책을 찾았습니다. 나는 말해야 만한다 - 불만족스러운 경험은 무엇 이었는가! 그러나 어이, 해결책은 여기있다.

설정 링크를 작성하려면 먼저 등록해야합니다. 다음 코드는 트릭을 수행하는 스텁입니다.

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'; 
    } 

} 
+0

당신의 함수 renderPluginMenu는 두 개의 인자가 빠져 있습니다 :'renderPluginMenu ($ links, $ file) {' –

1

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_filter 줄은 거의 같습니다. 시도 할 첫 번째 일은 admin_url 함수의 사용을 추가하는 것입니다.

희망이 있습니다.

+0

admin_url을 추가해도 도움이되지 않았습니다. 내 설정 화면이 별도의 파일에 있다는 사실에 뭔가가있을 수 있습니다. –

관련 문제