Motywy potomne – czym są i dlaczego (nie) trzeba ich używać

Motywy potomneIlość dostępnych szablonów dla WordPressa jest wręcz przytłaczająca i każdy z pewnością znajdzie coś dla siebie. Najczęściej jednak zachodzi konieczność wprowadzenia jakichś mniejszych lub większych modyfikacji – na przykład zmiany kolorów, rozmiaru nagłówków czy wielkości marginesów. Motywy potomne (child themes) pozwalają na (teoretycznie) bezproblemowe dostosowywanie gotowych szablonów do naszych potrzeb, bez konieczności dotykania ich oryginalnych plików. Postaram się przybliżyć nieco temat ich tworzenia, omówić ich najważniejsze zalety i wady, wyjaśnić dlaczego nie należy grzebać w plikach szablonu, a także kiedy nie ma sensu korzystać z motywów potomnych.

Dlaczego nie wolno modyfikować oryginalnych plików szablonu?

Motywy, niezależnie od tego czy są darmowe czy płatne, są zwykle rozwijane i aktualizowane przez swoich autorów. Kolejne wersje mogą zawierać nowe funkcje czy różnego rodzaju poprawki (w tym związane z bezpieczeństwem), które chcielibyśmy, lub wręcz nawet powinniśmy, wprowadzić również na naszej stronie. Problem w tym, że w trakcie aktualizacji szablonu wszystkie jego pliki są usuwane, a na ich miejsce są kopiowane nowe – tak więc jeśli zmieniliśmy któryś z oryginalnych plików, to nasza praca zostanie bezpowrotnie utracona.

Jak działają motywy potomne?

Mechanizm motywów potomnych został stworzony po to, aby można było dostosowywać szablony do swoich potrzeb bez konieczności modyfikowania oryginalnych plików. Dzięki temu możemy spokojnie aktualizować motyw bez obawy, że któraś z naszych modyfikacji zostanie usunięta. Działa to całkiem sprawnie, o ile nie potrzebujemy niczego więcej poza własnym arkuszem stylów CSS oraz plikiem functions.php, w którym możemy umieszczać swój kod PHP. Ale o tym za chwilę.

Motyw potomny to motyw, który jest oparty na innym motywie (rodzicu) i korzysta z wszystkich jego plików (szablonów stron, grafik, arkuszy stylów czy skryptów JavaScript). Arkusz stylów motywu potomnego jest ładowany po arkuszu motywu nadrzędnego, tak więc zawarte w nim reguły zastąpią reguły oryginalne (w ten sposób łatwo zmienimy na przykład kolory). Gdy WordPress potrzebuje jakiegoś pliku szablonu, to najpierw sprawdza czy nie istnieje on przypadkiem w motywie potomnym, a jeśli go tam nie znajdzie, to korzysta z pliku oryginalnego.

Motywy potomne mogą zawierać kopie dowolnych plików występujących w motywie nadrzędnym, mogą również zawierać pliki dodatkowe. I tak na przykład, jeśli chcemy zmodyfikować plik page.php (szablon statycznej strony), to możemy skopiować go do motywu potomnego, a WordPress od tej chwili będzie ładował tę kopie zamiast pliku oryginalnego. Możemy również dodać do motywu potomnego plik page-kontakt.php (szablon statycznej strony o skrócie „kontakt”), który nie istnieje w motywie nadrzędnym (gdybyśmy dodali go do motywu-rodzica, to zostałby on usunięty przy kolejnej aktualizacji szablonu).

Jak stworzyć motyw potomny?

Aby stworzyć motyw potomny nie jest potrzebna żadna specjalistyczna wiedza – cała operacja sprowadza się do utworzenia nowego katalogu w folderze szablonów (domyślnie jest to wp-content/themes) i umieszczenia w nim nowego pliku style.css. Plik ten musi zawierać poprawny nagłówek szablonu, który może wyglądać na przykład tak:

Do czego służą poszczególne linie nagłówka?

  • Theme Name – nazwa naszego motywu potomnego (wymagana)
  • Template – nazwa katalogu, w którym znajduje się motyw nadrzędny (wymagana); my skorzystamy z domyślnego motywu Twenty Twelve
  • Theme URI – adres strony naszego szablonu
  • Description – krótki opis naszego szablonu
  • Author – nazwa autora
  • Author URI – adres strony autora
  • Version – numer wersji naszego szablonu

Jak widać, wymagane są tylko linie Theme NameTemplate. Kolejność linii w nagłówku nie ma znaczenia.

Motyw potomnyTeraz musimy zapisać nasz nowy nagłówek do pliku style.css i umieścić go w nowym katalogu wp-content/themes/wpzen. Po wykonaniu tej czynności na stronie zarządzania szablonami (Wygląd -> Motywy) w panelu administracyjnym WordPressa pojawi się nasz motyw potomny. Gdy klikniemy link Szczegóły, pojawi się między innymi informacja o motywie narzędnym, który jest wymagany przez nasz szablon.

Po aktywacji naszego motywu potomnego nie wszystko jednak działa tak jak powinno. Strona wygląda tak jakby nie został załadowany arkusz stylów – i tak też się stało. Domyślnie WordPress nie ładuje głównego arkusza stylów motywu nadrzędnego, na przykład na wypadek, gdybyśmy chcieli go stworzyć od zera w motywie potomnym. Musimy więc dodać do naszego pliku style.css jedną linię, która go zaimportuje – najlepiej dodać ją zaraz za nagłówkiem.

Jeśli po odświeżeniu strony naszym oczom ukaże się szablon wyglądający identycznie jak Twenty Twelve, to znaczy że cała operacja przebiegła pomyślnie.

Możemy również w katalogu naszego motywu potomnego utworzyć plik functions.php, w którym będziemy umieszczać własny kod PHP. Warto jednak zastanowić się czy na pewno nasze modyfikacje powinny trafić do szablonu – w podjęciu decyzji pomoże ten tekst.

Wady motywów potomnych

Motywy potomne mają jedną wadę, która w mojej ocenie dyskwalifikuje je w przypadku, gdy chcemy wykonać nieco bardziej zaawansowane modyfikacje szablonu. Załóżmy, że musimy zmienić jakąś drobnostkę w kodzie każdego z plików używanych przez WordPressa do wyświetlania treści – nie ma w tym nic nietypowego, bo to dość powszechna sytuacja. Zgodnie z teorią, powinniśmy każdy z tych plików skopiować do naszego motywu potomnego i pracować na tych kopiach. Co jednak gdy autor oryginalnego szablonu zaktualizuje wszystkie te pliki? Nasze kopie przestaną być aktualne – nie będą bowiem zawierały zmian wprowadzonych przez autora. Tak więc będziemy musieli ręcznie wyszukać co się zmieniło i przenosić te zmiany do naszych plików. Jest to zadanie nie tyle trudne, co niezbyt przyjemne i dość czasochłonne.

Niestety, wada ta nie jest możliwa do wyeliminowania – przynajmniej dopóki WordPress nie doczeka się mechanizmu scalającego nasze zmiany w szablonie ze zmianami wykonanymi przez autora (tak jak ma to miejsce na przykład w phpBB). Na dzień dzisiejszy w takim przypadku lepiej jest po prostu skopiować cały szablon, nadać mu inną nazwę i pracować na tak przygotowanym klonie, darując sobie zabawę z motywami potomnymi.

Kiedy nie trzeba używać motywów potomnych?

Jeśli nasze zmiany w szablonie mają polegać tylko i wyłącznie na dodaniu kilku reguł CSS, to zamiast tworzyć motyw potomny możemy skorzystać z jakiejś wtyczki umożliwiającej wprowadzania własnego kodu CSS. Taką możliwość oferuje między innymi wtyczka Jetpack (moduł Custom CSS) lub znacznie prostsza Custom CSS Manager.

Tworzenie motywów potomnych za pomocą wtyczki Child Themify

Stworzenie motywu potomnego wymaga dostępu do serwera przez FTP lub w inny umożliwiający przesłanie plików sposób. Gdy nie mamy takiej możliwości lub po prostu czujemy, że cała operacja nas przerasta, możemy utworzyć szablon potomny za pomocą darmowej wtyczki Child Themify. Jest to proste do bólu narzędzie, które pozwala dwoma kliknięciami stworzyć całą potrzebną strukturę (katalog i pliki).

Tworzenie motywu potomnegoPo aktywacji wtyczki obok każdego z zainstalowanych szablonów pojawi się link Utwórz motyw potomny. Po jego kliknięciu zostaniemy przeniesieni do prostego formularza, w którym możemy wpisać nazwę naszego motywu potomnego. Po kliknięciu przycisku Dalej zostanie utworzony nowy katalog oraz plik style.css (możemy w razie potrzeby zmodyfikować jego nagłówek używając wbudowanego w WordPressa edytora – Wygląd -> Edytor).

Zdecydowaną wadą tego rozwiązania jest brak możliwości edycji nagłówka nowego arkusza stylów oraz brak pliku functions.php w utworzonym za pomocą tej wtyczki motywie potomnym (taką funkcję posiada wtyczka One-Click Child Theme, która jednak potrafi tworzyć motywy potomne tylko dla aktualnie aktywnego szablonu).

Polskie tłumaczenie wtyczki Child Themify można pobrać tutaj (nie jest ono dostępne w oficjalnym repozytorium WordPressa).

Bezpośredni link

  • Panie Bartku ! Jestem aktywnym internautą, ale brak mi uporządkowanej wiedzy informatycznej, więc używam mej ‚humanistycznej inteligencji’, intuicji a jak tzreba gotowców, by realizować zamierzone cele. W tym wypadku chodzi o mój pierwszy naprawdę poważny blog, który chcę odpowiednio poustawiać, by był w pełni funkcjonalny zarówno dla mnie jak i czytelników. Przeszedłem z WP.com na blog hostowany. To wszystko długo trwa (praca, kłopoty z przestrzenią wolnego czasu), niemniej sprawy przybrały dobry kierunek. I nagle wczoraj ‚gurus’ na forum wordpress.org przypomnieli mi motywach potomnych, bym nie zaczynał ustawiania motywu zanim nie stworzę go w katalogu. Z takimi ‚niespodziankami’ niedługo zapomnę o czym miałem pisać w tym blogu.

    Zależy mi głównie, by korzystać z możliwości motywu, które są dostępne w jego strukturze. Myślałem o Responsive, ale ten motyw był tak ‚zamotany’, że wybrałem ciekawy Twenty Eleven, Czy aktualizacje motywu oryginalnego wpływają na potomny zasilając go nowymi zaletami czy funkcjami? Z drugiej strony w przyszłości będę może chciał zrobić więcej. Czy wybór Child Themify to droga dla mnie? Mogę też poprosić BOK w hoście, by mi pomógł. A co z moimi ustawieniami różnych wtyczek np. ShareThis, Analytics, Akismet, Facebook for WP, SEO, XML Sitemaps itp. Mam nadzieję, że tych ustawień nie muszę już zmieniać, bo niedawno to robiłem wychodząc z serwera testowego na hostingu.

    • Tak, aktualizacje motywu nadrzędnego dodają nowe funkcje do motywu potomnego. Sposób utworzenia motywu potomnego jest kwestią gustu – każdy będzie dobry. Ustawienia wtyczek są zupełnie niezależne od motywu, tak więc nie ma się o co martwić.

      • Czyli użyję sugerowanej przez Pana wtyczki i będę miał na początek prościutki klon oryginału, w którym np. dodam galerię slajdową, nowe strony itp. i jestem bezpieczny wobec aktualizacji, a raczej ich złych skutków. Czy są w ustawieniach wtyczki jakieś ważne pułapki dla laika czy domyślne wystarczą?

        • O ile mnie pamięć nie myli, ta wtyczka nie ma żadnych ustawień.

          • DarekSobiecki

            W końcu użyłem One-Click Child Theme i chyba wszystko jest ok. Jest wprawdzie lekko niekompatybilna wobec WP 3.5, ale nie zawsze to chyba problem. Poprosiłem człowieka z hostingu o pomoc w utworzeniu klona Twenty Eleven i teraz mam klona i potomny. Przechodząc z potomnego na klona zauważyłem że zmienia ustawienia na domyślne. Obawiam się, że będąc na klonie odetnę się od uaktualnień. Myślę, że wracając na potomny, nie dojdzie do zmiany ustawień i będę miał spokój i uaktualnienia (już widzę, kolor zmienił się na ustawiony w potomnym wcześniej). Podsumowując: czy mam zostać na tym potomnym i nie kombinować ? Jeśli jeśli jest aktualizacja WP, tak jak teraz to jest bezpieczna dla chyba ? skoro to motyw WP? Przepraszam za to poruszanie się we mgle, ale potomne to nie jest moja bajka i chciałbym wiedzieć czy nie muszę już o nich myśleć :)

            Mam jeszcze pytania: W końcu udało mi się zarejestrować stronę na Google Analytics (Google ma bardzo nieprzyjazną strukturę zakładek, ponadto robi się to via Google Webmaster Tools). Mam kod do wklejenia i sugestię, żeby wkleić go na kazdą stronę – to jakiś absurd: jeden kod na domenę byłby logiczny a to sugeruje albo kod na wszystkie moje strony czego nie chcę, albo na podstrony bloga, w co z kolei nie wierzę. Rada, by wkleić go do headera jest chyba słuszna tylko gdzie? jakiś widget? Przy okazji zapytam czy warto mieć Stats jako alternatywne statystyki, tudzież ShareThis, który prosi w konfiguracji o kod Google Analytics, więc staje się de facto pośrednikiem.

            Zainspirował mnie Pan platformą Disqus – jeszcze nie czuję jakie korzyści mogę z niej mieć :) Dla bezpieczeństwa nie konfigurowałem jej w Discovery :)

            Mam integrację z Facebookiem, ale nie wiem gdzie jest ten widget, który wyświetla krąg lubiących / śledzących. To fajny i czytelny widget. Jakieś sugestie?

            Przepraszam za taki natłok pytań, ale pański blog to jedno z bardziej wartościowych informacyjnych ‚zakotwiczeń’ w sieci.

            Pozdrawiam !

          • Oczywiście, że szablon główny i potomny mają osobne ustawienia i osobną konfigurację – to są było nie było osobne szablony, tyle że szablon potomny korzysta z plików (i tylko plików) szablonu głównego. Dlatego aktualizując szablon główny nowe funkcje „przejdą” również do szablonu potomnego (bo ten drugi używa plików tego pierwszego).

            Przez wklejenie kodu Google Analytics na każdą stronę musimy rozumieć obecność tego kodu na każdej stronie. Idealnym miejscem na ten kod jest nagłówek strony. Sugeruję skorzystać z jakiejś wtyczki, na przykład Google Analytics for WordPress (http://wordpress.org/extend/plugins/google-analytics-for-wordpress/), która zrobi wszystko za nas.

            Jeśli chodzi o Facebooka, to oficjalna wtyczka Facebooka (http://wordpress.org/extend/plugins/facebook/) ma taki widget.

          • DarekSobiecki

            Google Analytics for WordPress – zrobi tylko teoretycznie. Nie jest w stanie zweryfikować konta Google (re-authenticate). Przy ręcznym wklejaniu rozumiem, że chodzi o nagłówek strony głównej bloga czy wszystkich stron (O Blogu, Kontakt itp.)? ‚Strony’ poszczególnych wpisów zapewne nie. Twenty Eleven nie ma chyba przestrzeni na widgety w nagłówku gdzie można wkleić kod.

            Czy można zrobić mapę strony z możliwością jej widoku i updatu na stronie Mapa Strony. Polecany widget Dagon… nie jest już dostępny…

          • Google Analytics for WordPress zrobi to jak najbardziej praktycznie – do tego służy ta wtyczka. Nie chodzi o nagłówek strony bloga, tylko o nagłówek jako taki, który jest w WordPressie wspólny dla wszystkich stron.

            Wtyczek do robienia mapy strony jest cała masa i nie jestem w stanie polecić jakiejś konkretnej.

          • DarekSobiecki

            Super. Tak więc GDZIE go wkleić we wspólnym nagłówku bloga ? :) nie widzę tam za bardzo miejsca.

          • Gdziekolwiek przed znacznikiem ‚/head’.

  • Kolejny wpis który rozwiązuje mój problem z wgrywaniem plików po aktualizacji motywu. To mi zaoszczędzi sporo czasu.

  • mlody16918

    Witam, jak postapic w sytuacji kiedy tworzymy motyw potomny i chcemy podmienic np. obrazek tla. Czy mam go podmienic normalnie w folderze images „rodzica”? A moze utworzyc jakis nowy folder,odnoscik lub „cos” w motywie potomnym? Jestem bardzo poczatkujacym wiec prosze o wyrozumialosc ;)

    • Motywy potomne z zasady polegają na tym, że nie rusza się motywu rodzica. Tworzymy nowy katalog images w motywie potomnym, wrzucamy tam obrazek i do niego odwołujemy się w background-image.

  • feamoignargfaionakfj9ajfopamjv

    Dlaczego motyw potomny odwołuje się tylko do CSS rodzica (w HTML jest ścieżka tylko do style.css rodzica)?

    • Nie tylko, ale całą resztą zajmuje się WordPress – po to w pliku style.css motywu potomnego znajduje się znacznik ‚Template’.

    • feamoignargfaionakfj9ajfopamjv

      Gdyby ktoś miał podobny problem: w szablonie rodzica było sztywne odwołanie do CSS, bez zastosowania bloginfo(‚stylesheet_url’);

  • Dzięki za ten art, po błędzie aktualizacyjnym motywu gdzie wszystkie moje poprawki zniknęły wiem jak sobie z tym poradzić :) Uczymy się na błędach szkoda że czasami tak czasochłonnych ;p

  • and1rzej

    Jako nowicjusz, dopiero niedawno dowiedziałem się o takiej potrzebie, czyli utworzenia motywu potomnego, co jakby jest oczywiste, wszystko aktualizuję się w nieskończoność do lepszej wersji, w momencie automatycznej aktualizacji skórki, tracisz swoje spersonalizowane zmiany, swój zmodyfikowany css… to jest oczywiste…

    a ponieważ mam już kilka zmian w skórce(w pliku *.css, w pliku footer.php, inne), a nie pamiętam wszystkich (nie prowadziłem rejestru zmian), mam swoją wstępną intuicję, żeby zrobić to w taki oto prosty sposób:

    ———————-
    => skopiować wszystko, czyli cały katalog ze skórką „ABC” (wszystkie pliki)i na swoim dysku lokalnym nazwać go inaczej => np.: „abc child theme”
    => zmienić pierwszy wiersz w nagłówku w pliku „style.css”:

    ————-
    /*
    Theme Name: ABC
    */
    ———

    na:

    /*
    Theme Name: ABC child theme

    */
    = > i taki katalog, już z inną nazwą folderu i z innym wierszem w css – wgrać przez klienta FTP już jako nową skórkę do katalogu „…/themes”
    [i to wszystko]
    => następnie zmienić skórkę na „ample child theme”

    —————-

    moje pytanie – czy ten sposób jest dobry w sytuacji, kiedy mam już zmiany w skórce?

    • Dobrze kombinujesz, ale nie do końca. ;)

      Jeśli zrobisz tak, jak to opisałeś, to tak naprawdę zawsze będzie używany Twój child theme, ponieważ jego pliki „nadpiszą” wszystkie pliki oryginalnego motywu. Idealnie byłoby, gdybyś w motywie potomnym zostawił tylko te pliki, które zmodyfikowałeś – możesz je znaleźć pobierając oryginalny motyw w tej samej wersji, którą modyfikowałeś, i porównać jego pliki z Twoimi (dostępnych jest wiele darmowych narzędzi na to pozwalających). Następnie usuwasz ze swojego motywu wszystkie pliki, które są takie same w motywie oryginalnym i gotowe – masz child theme. ;)

      • and1rzej

        dziękuję za odpowiedź (w między czasie zrobiłem sobie przegląd zmian)

        więc wystarczy, że w moim przypadku:
        ——————————————————-
        utworze sobie katalog „abc child theme” z 
        1) plikiem „style.css” (a w nim zmiana nazwy w pierwszym wierszu)
        2) plikiem „footer.php”
        i taki folder wrzucę do „…/themes”
        by go potem podpiąć
        —————————————————–
        cała reszta (to, co nie zmieniane) będzie dziedziczone z motywu nadrzędnego ?

        • Dokładnie tak.

          • and1rzej

            dziękuję,

            a czy drobne zmiany na poziomie „theme options”, mają też swój rejestr w jakimś pliku, który możnaby skopiować do „child theme” ?

          • Nie – ustawienia motywu są zapisywane w bazie danych, aczkolwiek powinny działać bez problemu z poziomu child theme.

          • and1rzej

            chyba coś zrobiłem źle, jeśli chodzi strukturę plików mojego child theme i nagłówek pliku css

            ———————-gdyż mam taki oto komunikat w cms:———————-
            „Niekompletne motywy

            Poniższe motywy zostały zainstalowane, ale są niekompletne. Motywy muszą składać się co najmniej z arkusza stylu i szablonu.”
            ——————————————————————

            *więc na razie nie wgrywam/i/nie wgrywałem jeszcze child theme*

            albo należy zignorować ten komunikat ?!

            —————ample child theme————————————
            struktura plików:
            ample child themestyle.css
            ample child themefooter.php

            /*plik style.css – nagłówek*/
            /*
            Theme Name: Ample child theme /*—zmieniłem nazwę —*/
            Template – ample /*— dodałem nazwę folderu z szablonem —*/
            Theme URI: http://themegrill.com/themes/ample/
            Author: ThemeGrill
            Author URI: http://themegrill.com
            Description: Ample is a multipurpose responsive WordPress theme made to help you create a beautiful professional looking site in no time. It has numerous built-in options to give your site the look that you want. Get free support at http://themegrill.com/support-forum/ and check the demo at http://demo.themegrill.com/ample/
            Version: 1.0.4
            License: GNU General Public License, version 3 (GPLv3)
            License URI: http://www.gnu.org/licenses/gpl-3.0.txt
            Tags: light, white, three-columns, right-sidebar, left-sidebar, custom-header, custom-background, custom-menu, custom-colors, sticky-post, threaded-comments, translation-ready, featured-images, theme-options, responsive-layout
            Text Domain: ample
            */

            ———————-

          • Zwracaj uwagę na format nagłówka. U Ciebie jest:

            Template – ample

            a powinno być:

            Template: ample

          • and1rzej

            Święta racja !

            dziękuję bardzo, wszystko działa

            – –

            (*będę śledził pana blog, mam go także na fb w kanała informacji…*)

          • and1rzej

            kontynuując jeszcze trochę temat motywów potomnych, np. tłumaczenia (pliki pl_PL.pl, pl_PL.mo) mimo zapisania w motywie potomnym po aktualizacji motywu nadrzędnego, się posypały, jak sądzę nie wystarczą pliki pl_PL.po i pl_PL.mo w folderze child theme, bo zmienia się plik „wp-config.php” po aktualizacji, nie ma jakiegoś pliku który je wciąga do motywu potomnego ?

          • Plik wp-config.php nie ma tu żadnego znaczenia. Nie wiem co masz na myśli pisząc „posypały się”. Pamiętaj, że od niedawna funkcjonuje nowa organizacja tłumaczeń, które teraz są przechowywane i aktualizowane osobno (nie razem z motywem), tak więc istnieje możliwość, że Twoje tłumaczenie zostało nadpisane tlumaczeniem z repozytorium.

            Generalnie podałeś zbyt mało informacji, aby móc cokolwiek wydedukować. ;)

  • Aga

    A jak ma się nie używanie child theme’ów do bezpieczeństwa?
    Zbudowałam sklep na bezpłatnej wersji Parallax One, ale musiałam wprowadzić tyle zmian, że child theme nie miał sensu. Jednak teraz się boję, że za jakiś czas strona może zostać zainfekowana… Jaka jest na to szansa, jeżeli zmieniłam nazwę motywu i nazwę jego folderu? W jaki sposób boty szukają danego motywu, aby potem przez jego znane luki zrobić bałagan ze stroną?

    • Trudno powiedzieć jaka jest szansa na znalezienie luki w bezpieczeństwie, bo to zależy od motywu. Najczęściej (ale nie zawsze) luki są odkrywane w skryptach i bibliotekach używanych przez motywy, nie w samych motywach. Wydaje mi się, że jedyną sensowną opcją jest obserwowanie aktualizacji używanego motywu i sprawdzanie, czy któraś z nich nie usuwa jakiegoś błędu związanego z bezpieczeństwem.

      Boty z reguły szukają wtyczek i motywów kierując się nazwą katalogu, rzadziej nazwą motywu umieszczoną w pliku style.css.

      • Aga

        czyli teoretycznie zmieniając nazwę katalogu jestem jakoś tam zabezpieczona. dzięki za odp, jak zawsze szybko i rzeczowo:)

  • Jan

    Witam.

    Mam pytanie odnośnie tłumaczenia pól w woocomerce i motywu potomnego.
    Wiem jak przetłumaczyć plik na język polski, ale nie wiem jak wrzucić te tłumaczenia do motywu potomnego, aby po aktualizacji się nie posypały.
    Pliki oryginalne z tłumaczeniami znajdują się w: wp-content->languages->plugins
    Natomiast motyw potomny w: wp-content->themes->nazwa_motywu_potomnego

    Wrzuciłem do folderu motywu potomnego folder languages->plugins->tutaj_tłumaczenia i nie działa.

    Jakaś rada, pomoc w rozwiązaniu problemu?

    • Próbowałeś wrzucić plik z tłumaczeniem motywu potomnego do ‚wp-content->languages->themes’?

      • Jan

        Czyli, że nie wrzucać tłumaczeń do motywu potomnego (wp-content->themes->nazwa_motywu_potomnego->languages->plugins->tutaj_tłumaczenia), tylko bezpośrednio do folderu (wp-content->languages->themes)?

        Wchodząc do wskazanego folderu są tłumaczenia z nazwami motywów a ja chcę przetłumaczyć część fraz wyświetlających się w woocomerce

        • Tłumaczysz motyw potomny czy WooCommerce? Jeśli WooCommerce, to tłumaczenia musisz wrzucić do ‚wp-content->languages->plugins’ i niestety musisz uważać, aby aktualizacja Ci ich nie nadpisała. O ile wiem, nie da się wrzucić tłumaczeń wtyczki do katalogu motywu – to nie będzie działać.

          • Jan

            Chcę przetłumaczyć wyświetlanie nazw w WooCommerce. Chciałem je wrzucić do pliku z motywem potomnym, aby wprowadzone zmiany nie zostały nadpisane przy aktualizacji WooCommerce.
            Z powyższej wypowiedzi rozumiem, że nie da się tego zrobić i pozostaje tłumaczenie plików już dostępnych a jedyną metodą zabezpieczającą, przed utratą wprowadzonych tłumaczeń jest zrobienie kopii przetłumaczonych plików na dysk swojego komputera i ewentualne ponowne wprowadzanie tych danych po nadpisaniu plików podczas aktualizacji.
            Czy dobrze to zrozumiałem?

          • Dobrze zrozumiałeś. ;)

            Zastanawiam się nad tym, czy może dałoby się usunąć oryginalny plik językowy WooCommerce i załadować plik językowy z Twoimi tłumaczeniami, ale szczerze mówiąc nigdy czegoś takiego nie robiłem i nie wiem jak to się zachowa. W motywie potomnym w pliku ‚functions.php’ dodaj sobie takie coś:

            add_action(‚init’, ‚load_custom_language_file’, 999);
            function load_custom_language_file() {
            unload_textdomain( ‚woocommerce’ );
            load_plugin_textdomain( ‚woocommerce’, false, get_template_directory() . ‚/languages/’ );
            }

            i wrzuć swój plik językowy dla WooCommerce do katalogu ‚wp-content/themes/nazwa_motywu_potomnego/languages’.

          • Jan

            Dziękuję za rozwianie wątpliwości.
            Odnośnie ostatniej porady, to jeśli zadziała na localhoscie to powinno zadziałać również już na hostingu bez problemów?
            Czy trzeba aż usuwać oryginalne pliki a nie wystarczy sam zapis, który podałeś?

          • Tak, jeśli zadziała, to będzie działać wszędzie.
            Nie trzeba usuwać oryginalnych plików.

          • Jan

            Jeszcze raz dziękuje bardzo za odpowiedzi.
            Pozdrawiam

  • Damian

    Dzień dobry!
    Jestem początkującym użytkownikiem WordPressa.
    Zacząłem dopiero budować swoją stronę, stosując się do wielu wskazówek z Pańskiego bloga [wielkie dzięki za nie!! :) ]
    Wczoraj dostałem powiadomienie o dostępnej aktualizacji motywu (Sydney), rozczytałem się nieco w temacie motywów potomnych. Utworzyłem taki motyw (zrobiłem wszystko tak, jak przedstawione w poradniku powyżej, a wcześniej także kopię zapasową.

    Plik style.css w nowym motywie jest minimalistyczny do bólu, jak w przykładzie powyżej (kilka stylów mam wrzuconych do sekcji Wygląd -> Custom CSS). Do nowego folderu skopiowałem jedynie stopkę, którą modyfikowałem w szablonie (foooter.php jota w jotę skopiowana jest z wordpressowego Edytora).

    Po włączeniu motywu potomnego na stronie wariuje kolorystyka oraz grafiki, które były ustawione za pomocą Personalizacji motywu. W stopce nie ma polskich znaków.
    Co mogłem zrobić źle?
    Pozdrawiam

    • Byłoby łatwiej cokolwiek stwierdzić gdybyś podał link do swojej strony.

  • Zmiany w CSS można wprowadzać już w poziomu kokpitu WP (od wersji 4.7), nie potrzeba dodatkowych wtyczek, liczę, że twórcy pójdą dalej i dodadzą możliwość scalania, o której wspominasz. Pozdrawiam

  • Agnieszka Kania

    Panie Bartku, chciałam zapytać o jedną rzecz (jestem początkująca proszę o wyrozumiałość, bo niewiele jeszcze z tego rozumiem). Czy po stworzeniu motywu potomnego, wszystkie późniejsze zmiany np. kolorów czy marginesów mam wykonywać w motywie potomnym czy głównym? I który mam włączyć jako aktywny szablon w wordpressie?

    • Oczywiście aktywny ma być motyw potomny i w nim wykonujesz wszelkie zmiany.

      • Agnieszka Kania

        dziękuję. A co się stanie jeżeli przez pomyłkę dokonam zmian w motywie głównym?

        • Nic. Problem pojawi się dopiero gdy zostanie udostępniona nowa wersja motywu i będziesz chciała wykonać aktualizację – wszystkie Twoje zmiany w plikach zostaną nadpisane (czyli po prostu znikną).

          • Agnieszka Kania

            dziękuję za szybką i czytelną odpowiedź. Pozdrawiam serdecznie

  • Konrad Warzecha

    Witam.

    Chciałem się dowiedzieć jak sprawa się ma z polami custom CSS. Spotykam je w szablonach i wtyczkach. Do tej pory wszelkie zmiany wprowadzałem właśnie w te pola. Są to zazwyczaj modyfikacje kolorystyczne czy modyfikacje wielkości fontów itp. Czy mogę używać ich w takich sytuacjach? Jeśli tak lub nie to do, którego momentu one zdają egzamin? Skoro autor szablonu udostępnia taką opcję to zakładam, że aktualizacje nie „przeorają” tego kodu do zera.

    • Możesz ich spokojnie używać, dopóki nie ma w nich zbyt dużej ilości kodu – wtedy stają się niewygodne i lepiej wrzucić ten kod do pliku. Aktualizacje nie dotykają tych pól, bo ich zawartość jest zwykle przechowywana w bazie danych.