Pracuję nad wtyczką, która idealnie byłaby w stanie robić rzeczy, gdy użytkownik robi coś za pomocą innej wtyczki.
Mogę dodawać niestandardowe zaczepy w tych wtyczkach, ale oczywiście nie zadziałałoby to dobrze, gdy chcę rozpowszechniać moją wtyczkę. Czy istnieje dobry sposób dodawania haczyków do wtyczek innych osób z własnej wtyczki? Czy to jedyne realne rozwiązanie, które prosi autora o dołączenie niestandardowych haków, aby inni programiści mogli czerpać korzyści ze swojej pracy?
Przykład: Chcę coś zrobić we wtyczce, gdy ktoś ponownie prześle artykuł. Gdyby w dowolnej popularnej wtyczce z retweetem był niestandardowy hak, do którego mógłbym się podłączyć i odpalić, byłoby świetnie. Nie ma, więc mogę zmodyfikować ich wtyczkę, aby ją uwzględnić, ale działa to tylko w przypadku mojej kopii i nie chcę próbować jej rozpowszechniać.
Czy musimy po prostu być lepszymi programistami wtyczek, aby wszyscy mogli grać razem dobrze?
Odpowiedzi:
@Ryan Elkins:
Wydaje mi się, że odpowiedź zależy od tego, jak ważne jest importowanie każdego przypadku użycia. W niektórych przypadkach byłoby to coś, czego potrzebujesz szybko i brudno, w innych może to być bardziej znaczący przypadek użycia. Oto dwie rzeczy, które przychodzą na myśl:
Poszukaj alternatywnych haków w WordPress Core
Jeśli czasami coś jest szybkie i brudne, możesz użyć innych haczyków pobierania danych od rdzenia, aby zmodyfikować to, czego potrzebujesz, lub zarówno haków pobierania danych, jak i pobierania danych za pomocą
ob_start()
/ob_end_clean()
(patrz @Todd Perkins, odpowiedź na „ Radzenie sobie z dużym wyjściem HTML za pomocą kodu wtyczki ” na przykład kodu).Aby wyśledzić haczyki, możesz użyć wtyczki Instrument Hooks, którą zamieściłem wczoraj, aby pomóc Ci znaleźć haki, których możesz potencjalnie użyć.
Prześlij łatkę ze swoim pożądanym hakiem do programisty wtyczek
Jeśli twój przypadek użycia jest bardziej znaczący dla ciebie lub społeczności, polecam pójść naprzód i dodać hak, którego potrzebujesz do wtyczki. Następnie przetestuj go dobrze, aby upewnić się, że naprawdę odnosi się do Twojego przypadku użycia, po którym możesz przesłać łatkę twórcy wtyczki w nadziei, że zastosuje ją. W ten sposób ułatwisz im działanie, dając im przetestowany kod, i samodzielnie przejrzysz przypadek użycia, aby upewnić się, że naprawdę jest to, czego potrzebujesz. Nie potrafię powiedzieć, jak często myślałem, że potrzebowałem pewnego haka, który znajdowałem po próbie jego wdrożenia, ale potrzebowałem haka, który był inny niż początkowo przewidywałem.
Jeśli nie jesteś zaznajomiony z tworzeniem łatek tutaj jest dobry artykuł na temat łatania rdzenia WordPress, dla którego większość dotyczy łatania wtyczek, a dla tego, czego nie ma, mam nadzieję, że będzie oczywiste, co zrobić:
Mam nadzieję że to pomoże?
PS Jedną rzeczą, która wydaje mi się nieco rozczarowująca, jest to, że adres twojego pytania dotyczy odsetka wtyczek, które są przeznaczone tylko dla użytkowników końcowych, tj. Nie mają własnych haczyków. Wyobraź sobie, że WordPress został zaprojektowany jak większość wtyczek? Byłoby to nieelastyczne i bardzo niszowe rozwiązanie.
Może byłoby inaczej, gdyby WordPress miał możliwość automatycznego instalowania wtyczek, od których zależały inne wtyczki? W tej chwili zazwyczaj muszę napisać wiele funkcji, których potrzebuję od zera, ponieważ klienci chcą pewnych rozwiązań i dostępnych wtyczek, a 90% tam nie pozwala mi na aktualizację pozostałych 10%.
Naprawdę żałuję, że osoby prowadzące społeczność WordPress nie znalazły sposobu, aby zapewnić, że wtyczki są nagradzane za przestrzeganie najlepszych praktyk (takich jak dodawanie haków dla innych programistów), podobnie jak dobre odpowiedzi są nagradzane na stronie StackExchange.
źródło
Na początek tak.
To byłoby dobre rozwiązanie.
Możesz także skopiować drugą wtyczkę i po prostu dodać wszelkie zmiany, choć byłoby to bardziej kłopotliwe.
źródło
Myślę, że odpowiadasz na pytanie w pytaniu, aby stało się ono nieco retoryczne.
Oczywiście mówisz o systemie podobnym do tego, który Google zachęca z Androidem i systemem Intent, że aplikacja może publikować działania, które może wykonywać w imieniu innych aplikacji, które mogą się do nich podłączyć i przekazać dane z powrotem i naprzód. Osobiście uważam, że jest to coś, do czego powinniśmy zmierzać jako dobrzy programiści - używamy WordPress, ponieważ jest już niesamowity, wystarczająco wspaniały, aby podjąć decyzję, czy go użyć, czy opracować podobny wewnętrzny produkt w większości przypadków. Samo repozytorium wtyczek jest znowu to samo, głównie jako użytkownik końcowy + programista - po co opracowywać wtyczkę twitter, gdy jest ona idealnie dobra.
To samo „dlaczego opracowywać duplikaty” znajduje się w centrum pytania. System Android Intent umożliwia aplikacjom korzystanie z już utworzonych funkcji i przesyłanie danych między nimi, a to jest popularne i często używane, ponieważ jest tak mocno popychane. Podobny system jest już zaimplementowany w WordPress, ale bardzo rzadko jest używany poza hakami obecnymi w kodzie podstawowym, które są bardzo często używane.
Byłoby korzystne dla społeczności, gdyby było więcej zaczepów w niestandardowych wtyczkach, ale jak mówisz, nie ma łatwego sposobu dodawania zaczepów, kiedy / gdzie ich potrzebujesz.
Jeśli chodzi o wtyczkę Twittera, do której chcesz się podłączyć, wyślij autorowi wiadomość e-mail, jestem pewien, że chętnie go doda.
Jeśli istnieje miejsce, które Twoim zdaniem byłoby dobrym miejscem na włożenie haka do wtyczki, zrób to i dobrze udokumentuj. Jeśli więcej osób zacznie umieszczać haczyki we wtyczkach lub nastąpi ogólne dążenie do tego, w końcu tak się stanie.
Aby odpowiedzieć na końcowe pytanie:
Tak.
Edycja: Zastanowiłem się trochę nad faktycznym pytaniem i najlepszym sposobem implementacji hooków, czy nie możesz dodać akcji, która uruchomiłaby się, gdyby konkretna funkcja, którą próbujesz uruchomić wtyczkę, była obecna?
źródło
zdefiniuj funkcję:
teraz możesz podpiąć się do tego haka:
add_action('my_footer', 'example_function', 1);
# więcej informacji zobacz na moim poście .źródło