Como criar forma personalizada no WordPress?

eu tenho um site Wordpress e gostaria de criar um formulário (entrada -> banco de dados).

Já vi dois tutoriais: São ambos muito parecidos. Criando o front end com html e js, e então processando a informação para o db usando php.

O meu problema é que sempre que submeto o formulário, mostra uma página 404 que diz " Oops! Essa página não pode ser encontrada."

Agora o meu problema é (ou quero saber):

onde é que eu preciso de colocar o ficheiro process.php? (Estou usando fileZilla). Tentei lugares sevral na pasta public_html/wp-content.

2) porque é que os campos de nome e E-mail não estão a ser validados? (sem indicação para o campo de nomes vazios, etc...)

Obrigado, e avisa - me se me estiver a escapar alguma coisa.

Estrutura Da Forma:

O Seu Nome: [Texto], O seu Email: [texto], Sexo: [*Masculino * Feminino], Idade: [texto], [botão Enviar]

página do formulário:

<form name="myForm" method="POST" onsubmit="return form_validation()" action="../process.php">
    Your Name: <input id="customer_name" name="customer_name" type="text" />
    Your Email: <input id="customer_email" name="customer_email" type="text" />
    Sex: <input name="customer_sex" type="radio" value="male" />Male <input name="customer_sex" type="radio" value="female" />Female
    Your Age: <input id="customer_age" name="customer_age" type="text" />
    <input type="submit" value="Submit" />
</form>

<script type="text/javascript">
function form_validation() {
    /* Check the Customer Name for blank submission*/
    var customer_name = document.forms["myForm"]["customer_name"].value;
    if (customer_name == "" || customer_name == null) {
        alert("Name field must be filled.");
        return false;
    }

    /* Check the Customer Email for invalid format */
    var customer_email = document.forms["myForm"]["customer_email"].value;
    var at_position = customer_email.indexOf("@");
    var dot_position = customer_email.lastIndexOf(".");
    if (at_position < 1 || dot_position < at_position + 2 || dot_position + 2 >= customer_email.length) {
        alert("Given email address is not valid.");
        return false;
    }
}

Processo.php: (não editado)

<?php
$customer_name = $_POST["customer_name"];
$customer_email = $_POST["customer_email"];
$customer_sex = $_POST["customer_sex"];
$customer_age = $_POST["customer_age"];

$conn = mysqli_connect("Database Host","Database Username","Database  Password","Database Name");
if(!$conn) {
    die(‘Problem in database connection: ‘ . mysql_error());
}

$query = "INSERT INTO ‘Database Name’.’Table Name’ ( ‘customer_name’, ‘customer_email’, ‘customer_sex’, ‘customer_age’ ) VALUES ( $customer_name, $customer_email, $customer_sex, $customer_age )";
mysqli_query($conn, $query);

header("Location: my-site.com/success"); // redirects to success page
?>
Author: Raunak Gupta, 2016-10-09

1 answers

Para responder à primeira pergunta: O WordPress fornece Ganchos de Acção e filtro para os programadores adicionarem o seu código ou funções personalizadas de PHP. Você deve olhar para isso, porque usar plugins que produzem excertos não vai ajudar no seu caso, porque ele curso o seu PHP para executar sem mesmo carregar o seu formulário para que você vai estar vendo sua página de sucesso em vez disso. Para saber mais sobre a acção e os ganchos do filtro , Visite aqui

Alternativa à utilização de 'Hooks' de Acção/filtro, poderá enviar o seu ficheiro php para a pasta temática. No entanto, há uma falha nisso. Seu arquivo pode ser perdido quando atualizações WordPress.

Para responder à segunda pergunta: existe um ware mais fácil de validar o seu formulário com if usando JavaScript. Tudo o que você precisa fazer é adicionar a palavra "necessário" dentro da tag de entrada. Você também pode usar o tipo de entrada 'email' juntamente com a palavra-chave necessária para validar o seu email. Veja o exemplo abaixo.

<form name="myForm" method="POST" action="../process.php">
    Your Name: <input id="customer_name" name="customer_name" type="text" required/>
    Your Email: <input id="customer_email" name="customer_email" type="email" required/>
    Sex: <input name="customer_sex" type="radio" value="male" />Male <input name="customer_sex" type="radio" value="female" />Female
    Your Age: <input id="customer_age" name="customer_age" type="text" />
    <input type="submit" value="Submit" />
</form>

Se ainda quiser usar a sua função JavaScript tente usar documento.getElementById ('nome_ personalizado') e documento.getElementById ('personaler_ email') em vez do documento.formulario. Certifique-se também de fechar a etiqueta do script no final. Veja abaixo por exemplo.

<script type="text/javascript">
function form_validation() {
    /* Check the Customer Name for blank submission*/
    var customer_name = document.getElementById('customer_name').value;
    if (customer_name == "" || customer_name == null) {
        alert("Name field must be filled.");
        return false;
    }

    /* Check the Customer Email for invalid format */
    var customer_email = document.getElementById('customer_email').value;
    var at_position = customer_email.indexOf("@");
    var dot_position = customer_email.lastIndexOf(".");
    if (at_position < 1 || dot_position < at_position + 2 || dot_position + 2 >= customer_email.length) {
        alert("Given email address is not valid.");
        return false;
    }
}
</script>
 1
Author: M. Abdulai, 2016-11-14 14:16:54