Na blogu dev.WPZlecenia pojawił się wczoraj artykuł sponsorowany pokazujący, jak nauczyć WordPressa przechowywania adresów IP logujących się użytkowników. Ponieważ komentarz do niego może być długi, a będzie miał też całkiem fajną wartość merytoryczną, to postanowiłem opublikować go tutaj. Zobaczymy sobie przy okazji, jak zły kod można krok po kroku poprawić.

Przede wszystkim trudno byłoby mi zaufać hostingowi, który wsadza mnie na minę i zapomina wspomnieć o ważnych konsekwencjach. Po pierwsze, jeśli chcemy sobie zapisywać adres IP, to ze względu na RODO musimy poinformować o tym fakcie użytkowników, wpisać to w regulamin i politykę prywatności, a przede wszystkim – uzasadnić potrzebę przechowywania tej właśnie informacji (bo nie możemy zbierać i przetwarzać danych bez uzasadnienia).

Natomiast, jeśli już przebrniemy przez całe to prawnicze zamieszanie… Fajnie byłoby robić to kodem, który ma ręce i nogi.

(więcej…)

Od jakiegoś czasu o Gutenbergu robi się coraz głośniej. Także na WordUpach. Najczęstsze pytanie, jakie pada w kontekście prezentacji na ten temat brzmi „A czy ja muszę go używać? Czy można go będzie jakoś wyłączyć?”

Odpowiedzi słyszałem już różne… Że się nie da, bo Gutenberg będzie domyślnym edytorem i zostanie na nas wymuszone jego używanie. Że będą (już są) wtyczki, które pozwalają go wyłączyć. Itd…

Ale czy naprawdę pozostanie przy starym edytorze jest aż tak skomplikowane? Przecież mowa o WordPressie – na pewno jest do tego jakiś filtr 😉

(więcej…)

ContactForm7 to chyba najpopularniejsza wtyczka do łatwego tworzenia formularzy, które można umieścić na stronie. Nie jest ona co prawda najwygodniejsza, najładniejsza, ani najbardziej intuicyjna, ale z pewnością jest szybka, bezpieczna i spełnia swoją rolę. A co więcej – dzięki przemyślanemu użyciu filtrów i akcji, pozwala na łatwe modyfikacje i integracje.

Zacznijmy od najprostszej i chyba najczęściej spotykanej modyfikacji, czyli:

Jak zrobić coś dodatkowego (zapisać do pliku, zachować w bazie danych, utworzyć wpis, itd.) z przesłanym formularzem?

Dzięki temu, że autor wtyczki przewidział taką możliwość, dodanie takiej integracji jest stosunkowo proste. Spójrzmy na poniższy kod, który realizuje chyba najprostszą formę takiej integracji, a jednocześnie jest świetnym startem do budowania swoich, bardziej rozbudowanych wersji:

function prefiks_process_submitted_form_data( $contact_form ) {
    $submission = WPCF7_Submission::get_instance();
    if ( $submission ) {

        // Pobierz dane przesłane w formularzu
        $submitted_name = $submission->get_posted_data('your-name');
        $submitted_email = $submission->get_posted_data('your-email');
        $submitted_subject = $submission->get_posted_data('your-subject');
        $submitted_message = $submission->get_posted_data('your-message');
        // ...

        // Zrób coś z danymi (np. zapisz je do pliku)
        file_put_contents('cf7-log.txt', 'Data: ' . date('c') . "\n", FILE_APPEND);
        file_put_contents('cf7-log.txt', "Autor: {$submitted_name} <{$submitted_email}>\n", FILE_APPEND);
        file_put_contents('cf7-log.txt', 'Temat: ' . $submitted_subject . "\n", FILE_APPEND);
        file_put_contents('cf7-log.txt', "Wiadomość:\n" . $submitted_message, FILE_APPEND);
        file_put_contents('cf7-log.txt', "\n--------------------\n", FILE_APPEND);
    }
}
add_action( 'wpcf7_before_send_mail', 'prefiks_process_submitted_form_data' );

(więcej…)