• Witam serdecznie, pisze swój mały plugin, który umieszczać będzie informacje na stronie na temat filmów (prościzna totalna tj,.nazwa i opis), chcialem skorzystac do tego z api filmwebu.
    Zatrzymałem się na pewnym problemie, otóż w przykładowym uzyciu api obiekt tworzony jest w nastepujący sposób $filmweb = \nSolutions\Filmweb::instance();

    natomaist jezeli ja próbuje zrobić coś takiego otrzymuje błąd
    Uncaught Exception: Could not find class: Filmweb_MetaSliderPlugin.php in Y:\Programy\xampp\htdocs\site55\wp-content\plugins\site55_panel\Filmweb.php:160 Stack trace: #0 [internal function]:
    zaznaczyć chce ze testujac api bez wordpress’a wszystko poszło bez problemu, o co mozę chodzić?

    a tutaj sposób w jaki tworze obiekt w pluginie:

    
        // Załadowanie klasy Filmweb.
        require_once($pluginDir.'Filmweb.php');
    
    	// Utworzenie nowej instancji.
        if ( class_exists( 'Filmweb' ) ){
           $filmweb = \nSolutions\Filmweb::instance();
        }
    
    

    warunek powyżej zwraca false mimo że jeszcze wyżej dodałem plik z klasa

    • This topic was modified 7 years, 6 months temu by raptor2.
Viewing 8 replies - 1 through 8 (of 8 total)
  • Moderator amistad18

    (@amistad18)

    Co jest w $pluginDir? Jaka jest dokładna ścieżka do pliku wtyczki? Pokaż kod pliku gdzie definiujesz klasę.

    Twórca wątku raptor2

    (@raptor2)

    $pluginDir = plugin_dir_path( __FILE__ );

    https://github.com/nSolutionsPL/filmweb-api – kod api, z którego korzystam

    Moderator amistad18

    (@amistad18)

    Metoda loader ma problem z załadowaniem klas – na pewno oprócz pliku Filmweb.php skopiowałeś do swojej wtyczki też katalog Filmweb/nSolutions i jego zawartość?

    Twórca wątku raptor2

    (@raptor2)

    tak oczywiście, skopiowałem całosć
    a zanim to zrobiłem przeniosłem te pliki do osobnego fodleru poza wordpress i przetestowałem czy na pewno wszystko działa – i tak działa

    natomiast w momencie przeniesienia całości do katalogu z pluginem mam wyżej wymienione problemy

    kiedy usuwam warunek - if ( class_exists( 'Filmweb' ) ){
    to otrzymuje po prostu ten blad:
    Uncaught Exception: Could not find class: Filmweb_MetaSliderPlugin.php in Y:\Programy\xampp\htdocs\site55\wp-content\plugins\site55_panel\Filmweb.php:160 Stack trace: #0 [internal function]:

    Moderator amistad18

    (@amistad18)

    Pokaż kod pliku MetaSliderPlugin.php

    Twórca wątku raptor2

    (@raptor2)

    Takiego pliku nie ma.

    To ejst zupełnie inny plugin z zupełnie innego katalogu.

    Twórca wątku raptor2

    (@raptor2)

    Zmieniłem co nieco definicję

        // Załadowanie klasy Filmweb.
        require_once($pluginDir.'Filmweb.php');
    	use nSolutions;
    
    // Utworzenie nowej instancji.
       if ( class_exists( '\nSolutions\Filmweb' ) ){

    teraz klasa jest widoczna ale przy tworzeniu instancji nadal otrzymuje błąd:
    $filmweb = \nSolutions\Filmweb::instance();

    Y:\Programy\xampp\htdocs\site55\wp-content\plugins\site55_panel\Filmweb.php:160 Stack trace: #0 [internal function]:

    Problem tkwi w pliku Filmweb.php, konkretniej wini autoloader i funkcja spl_autoload_register.
    Zjedź sobie na sam dół do: public static function loader($class), tam dopisz sobie na poczatku taką linijkę:
    if ($class !== strstr($class, __NAMESPACE__ . '\\')) return;
    To powinno rozwiązać problem.

Viewing 8 replies - 1 through 8 (of 8 total)
  • Temat ‘pierwszy plugin + api filmweb’ jest zamknięty na nowe odpowiedzi.