Jak wygenerować PDF z wpisu, strony lub własnego typu postu?
Ostatnio trochę czasu zajęło mi znalezienie odpowiedniej wtyczki do generowania z wpisów WordPressa estetycznych dokumentów PDF. Miałem kilka wymagań, po pierwsze wtyczka nie może dodawać żadnych znaków wodnych, reklam, musi być darmowa oraz pozwoli określić, które elementy mają znaleźć się na wynikowym pliku PDF (potrzebowałem również dodać do PDF-a własne pola – Custom Fields).
Wtyczka DK PDF
W końcu znalazłem wtyczkę, które spełniła te wymagania. Jeśli macie podobne potrzeby, wspomnianą wtyczkę możecie pobrać tutaj. Pozwala ona na dodawanie przycisku generowania PDF automatycznie do postów, stron, własnych typów postu lub można użyć do tego celu shortcode. Poza ustawieniami PDF, takimi jak orientacja strony, rozmiar czcionki, marginesy, możemy skonfigurować nagłówek, stopkę, logo oraz dodać własny kod CSS (do wynikowego PDF-a).
Dodajemy do PDFa własne pola
Wtyczka działa sprawnie, ale potrzebna była mi głównie do generowania treści dodawanych za pomocą Custom Fields, a standardowy pdf jest generowany tylko z treści głównej wpisu. Jak się okazało, możemy rozwiązać ten problem, nadpisując widoki w naszym motywie.
- Dodajemy do naszego motywu (lub motywu potomnego) katalog dkpdf, w do którego musimy skopiować na początek oryginalny widok ( z wp-content/plugins/dk-pdf/templates/dkpdf-index.php)
- Teraz możemy dowolnie edytować nasz nadpisany widok, ja dodałem po prostu kod, który służy do wyświetlania własnych pól (kod ten powinien się znajdować w pliku odpowiedzialnym za wyświetlanie własnych pól, np. single-plan.php, jeśli mamy własny typ postu o nazwie plan
- Możemy dodawać dowolną strukturę html oraz znaczniki
<pagebreak />
w miejscu, gdzie chcemy podzielić nasz dokument PDF na strony.
Jeśli używamy wtyczki ACF do własnych pól, fragment kodu, który dodajemy dla jednego pola może wyglądać tak:
<h3>Nagłówek:</h3> <strong><?php the_field( 'wlasne_pole' ); ?></strong>
Dodajemy nową rolę użytkownika do zarządzania własnym typem postu Zaktualizuj swojego WordPressa – ręcznie!