Mam problem ze swoją stroną. Próbuję utworzyć stronę „Skontaktuj się z nami”. Działa idealnie w zakresie projektowania. Ale kiedy próbuję wysłać formularz na tę samą stronę co źródło. Zwraca błąd 404.
Zdarza się to tylko wtedy, gdy wysyłam formularz. Próbowałem zarówno z żądaniami GET, jak i POST. Wydaje się, że nic nie działa.
Skomentowałem nawet część PHPMailer. Jest to spowodowane wyłącznie dodatkowymi zmiennymi.
Jeśli to pomaga, są to „imię”, „e-mail” i „wiadomość”.
$_POST
dane naprawdę nie powinny mieć wpływu na to, czy strona zostanie znaleziona, czy nie.Odpowiedzi:
Przedrostek wszystko , zwłaszcza zmienne. Nazwy, których używasz, są używane przez WordPress wewnętrznie (zobacz formularz komentarza), więc WordPress może spróbować zrobić coś z wartościami formularza. Jeśli to się nie powiedzie, pojawi się błąd.
Podczas gdy
$_GET
problemy są zwykle łatwe do debugowania,$_POST
a$_REQUEST
nazwy nie są takie proste.Poniższa lista prawdopodobnie nie jest kompletna. Ale jego długość mówi nam lekcję:
Unikaj nazw, które można znaleźć w słowniku. Przedrostek nazwy formularza.
Lista zastrzeżonych nazw w
$_POST
i$_REQUEST
używanych wykorzystywanych przez WordPress 3.5Te nazwy mogą mieć skutki uboczne, gdy są używane w motywach lub wtyczkach. Niektóre są używane tylko na określonych stronach (
removeheader
), inne na wielu stronach lub żądaniach. Unikaj ich wszystkich, jeśli możesz.Zmienne nazwy
źródło
Alternatywnie możesz wysłać to do WP i obsłużyć przetwarzanie w functions.php.
Dla formularza:
I dołącz ukryte wejście, które mówi WP, jaką funkcję będziesz przetwarzać:
Napisz funkcję w functions.php:
Powiedz WP, jaka jest funkcja:
źródło