redbitcz / simpleshop-wp-plugin

SimpleShop Wordpress Plugin
https://www.simpleshop.cz/category/wordpress-plugin/
Other
2 stars 1 forks source link

Jak volat funkci pro zjištění platnosti členství? #20

Closed vlastimilott closed 5 years ago

vlastimilott commented 5 years ago

Jak se dá zavolat metoda objektu Access-> user_can_view_post ve vlastní šabloně? Přístup k instanci pluginu a tedy instanci Access není možný. Případně jak si inicializovat svou instanci Access (co má být v argumentu settings)? Potřeboval bych ověřovat na detailu článku, že má uživatel platné členství a podle toho mu obsah zobrazit, nebo ho poslat na stránku, kde ho může koupit. Jde o magazín s x lety archivu, který zpětně zpoplatňujeme a úprava shortcody není možná.

Díky za objasnění.

vaclavgreif commented 5 years ago

Dobrý den, mrkněte na commit https://github.com/redbitcz/simpleshop-wp-plugin/commit/de647da02f226751877368a43b98a032ca581c72, jestli to dává takto smysl. Přidává to container, k funkci user_can_view_post byste se pak dostali ssc()->access->user_can_view_post()

jakubboucek commented 5 years ago

Uf! Tohle řešení je sice jednoduché, ale vůbec se mi nelíbí.

  1. Využívá to globální jmenný prostor, v němž zakládá funkci ssc() - ta může být kolizní s jiným pluginem.
  2. A především: Vytváří to novou instanci pluginu. Nemá WP něco jako container již běžících pluginů? Pokud ne, tak si asi nadefinujeme vlastní…
vlastimilott commented 5 years ago

No právě, taky mi to nepřijde efektivní. Statickou metodu pro to využít nejde. co třeba instanci pluginu vložit do proměnné? Volá se jen new Loader();

vaclavgreif commented 5 years ago

Využívá to globální jmenný prostor, v němž zakládá funkci ssc() - ta může být kolizní s jiným pluginem.

Stejně jako třeba woocommerce se svou funkcí WC(), bohužel WordPress nemá nějaký container, do kterého bychom mohli jen plugin přidat.

A především: Vytváří to novou instanci pluginu. Nemá WP něco jako container již běžících pluginů? Pokud ne, tak si asi nadefinujeme vlastní…

Ne, WP žádný container nemá. Ten kód dělá podle mě přesně tohle - vytváří container. Nevytváří to novou instanci pluginu, vytvoří to jednu a tu pak jen vrací.

Statickou metodu pro to využít nejde. co třeba instanci pluginu vložit do proměnné? Volá se jen new Loader();

Nerozumím, není to statická metoda, vrací to jednu instanci třídy Loader.

vlastimilott commented 5 years ago

Aha, už chápu, já jsem se odvolával na new Loader(); což tam bylo předtím, tady ten kontejner to řeší. Když pominu kolizi funkce (nízké riziko), tak by to jako řešení šlo...

jakubboucek commented 5 years ago

To nízké riziko je potřeba ale zcela vymýtit, protože je to úplně zbytečný bottleneck, který v případě kolize způsobí fatal error, který shodí celý Wordpress.

Zkoumám lepší řešení. Ale v zásadě použiju návrh @vasikgreif, jen ho upravím, abych odstranil nevýhody.

vlastimilott commented 5 years ago

Chtěl bych se zeptat, jestli mohu s úpravou počítat v dohledné době. Pracuji na klientském webu a musím to nějak vyřešit, ideálně by bylo řešení v pluginu... díky

jakubboucek commented 5 years ago

Dobrý den, ano bude to co nejdříve, omlouváme se za neplánované prodlení z důvodu nemoci.

jakubboucek commented 5 years ago

@vlastimilott Připravil jsem verzi pluginu, která obsahuje všechny Vámi požadované změny. Nicméně toto issue přinání možnou zpětnou nekompatibilitu a musíme ho před vydáním důkladně otestovat. Proto navrhuji, abyste si zkusil plugin v této verzi sám otestovat, zda Vám vyhovuje, aktuální testovací balíček je zde: https://github.com/redbitcz/simpleshop-wp-plugin/releases/tag/v2.1.0-alpha

jakubboucek commented 5 years ago

@vlastimilott Dobrý den, vzhledem k možné nekompatibilitě této úpravy nechci tuto změnu vydávat jen v patch verzi, ale bude vydána nová minor verze. Kolegyně plugin testují, ale narazily tam na drobnosti, které by u některých zákazníků mohly způsobit komplikace, takže se vydání tak asi o týden zpozdí.

Moc by nám pomohlo, pokud byste byl ochoten svoje zkušenosti s WP poskytnout na malou pomoc a připravovanou verzi 2.1.0 nainstalovat z připraveného balíčku a pomohl nám ji otestovat.

jakubboucek commented 5 years ago

Verze 2.1.0 byla právě vydána.