plugin_action_links WordPress 2.8 + çalışmıyor

2 Cevap php

WordPress 2.7 ince çalışıyordu Ayarlar linki ile bir eklenti geliştirdi. Sürüm 2.8 Ayarlar mesaj görüntüleyerek bağlantı neden bazı ek güvenlik özelliklerini getiriyor: Bu sayfaya erişmek için yeterli izinlere sahip değilsiniz.

Bu benim bağlantı oluşturmak için kullanabileceğiniz API kanca:

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

Mevcut Tam kaynak kodu plugin page.

Ayarlar ekranı herhangi bir ek mantık içermez, sadece bir seçenek çift ve HTML ekrana yankılandı.

Şaşırtıcı yeterli, Codex arama ifade "plugin_action_links" için hiçbir şey döndürmez. Eğer örnek sağlamak veya Ayarlar Eklentiler menüsünden bağlantı için çalışan kod beni işaret edebilir?

2 Cevap

Ben bazı rasgele eklentileri kaynaklarını analiz ederek kendi sorununa çözüm bulundu. Söylemem gerekir - bu ne bir unpleasurable deneyim! Ama hey, burada bir çözüm.

Bu Ayarları bağlantısını kurmak için, öncelikle kayıtlı olması gerektiğini çıkıyor. Aşağıdaki kod hile yapan bir taslaktır:

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

}

Ben 2.8 + çalışan benim eklentileri admin menü bağlantıları çalışma var. Benim işlevi, bu gibi görünüyor:

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

Benim add_filter çizgisi çoğunlukla aynıdır. Ben denemek için ilk şey, admin_url fonksiyonunun kullanımını ekleyerek düşünüyorum.

Umut olur.