Encontrei muito pouco neste site ou nas pesquisas do Google por exemplos de validação de campos personalizados da metabox.
Se alguém quiser dar exemplos, aqui estão alguns casos que seriam úteis
1) A data digitada como 05/02/2011 é o formato de data válido
2) O número digitado na caixa de texto é numérico e entre 100 e 500
3) O texto na caixa de texto tem> 25 caracteres
Minha pergunta não é tanto o código para validar os campos, mas onde colocar o código de validação? Use Javascript ou PHP? Se ele se prender ao save-post, técnicas para lidar com falhas na validação - Atualizar o post? Não atualiza a postagem? - como você impede a atualização? Melhor maneira de notificar o usuário sobre os problemas.
Todas as sugestões são apreciadas. O código de exemplo é mais útil do que apenas uma descrição de uma técnica. (Esse seria um tópico muito bom para alguém escrever um artigo.) Obrigado
fonte
Respostas:
Diretamente do WP Codex @ http://codex.wordpress.org/Function_Reference/add_meta_box , você chama o
save_post
gancho e especifica a função que será executada para validar / salvar seus dados:Então você define essa função, que receberá automaticamente o ID da postagem. Além disso, você pode acessar a matriz $ _POST para obter os valores em seus metaboxes:
Todas as suas rotinas para dados válidos serão realizadas nessa função. No final, você provavelmente salvará os dados usando algo como:
update_post_meta('meta_key', 'meta_value');
EDIT: Eu sei que não abordei a amplitude da sua pergunta, mas desde que dediquei esse tempo, deixo aqui para que você obtenha um quarto do caminho até lá.
fonte
Não há realmente nenhuma maneira adequada de validar um campo de data, tudo o que você pode fazer é dividi-lo e verificá-lo em partes.
Existe
checkdate()
, mas como mencionado nos comentários na página de documentos, ele não pode ser usado como um meio eficaz de higienizar a entrada de datas.A primeira coisa que costumo verificar é o tipo de dados, se você espera uma string e depois lança para uma string e da mesma forma para valores inteiros e de array.
Para os campos de data, normalmente você tem um separador entre cada parte da data, divida com base nisso e projete as partes (quantas desejar) como números inteiros.
É claro que isso realmente depende de como você armazena a data e o que você espera nesse campo; é algo que você precisará sanear adequadamente de acordo com suas necessidades específicas.
Os valores numéricos são bastante fáceis, primeiro convertidos para int ..
Em seguida, verifique se está dentro do intervalo especificado (de acordo com sua pergunta).
ou..
Verificar se uma string tem um comprimento específico é fácil, tão fácil que, na verdade, eu vou apenas vincular você à documentação do PHP para strlen.
http://php.net/manual/en/function.strlen.php
Os valores de data são os mais complicados na minha opinião, mas na verdade é um caso de escrever seu código para se adequar ao que você espera desse campo. Se você tem um campo com um formato de data de,
D/M/Y
por exemplo, sabe que a/
(barra) estará (deveria) estar presente e que a divisão nesse delimitador deverá fornecer uma matriz de 3 valores numéricos ... (se a divisão não ' não fornecer três valores ou se não houver valores numéricos válidos, os dados serão inválidos).Espero que ajude .. (e estou aberto à crítica se alguém tiver um método melhor para qualquer uma das opções acima).
fonte
Para validar corretamente a entrada, você precisará usar uma combinação de Javascript e PHP.
Eu recomendo usar o plugin jQuery Validation: http://docs.jquery.com/Plugins/Validation . Isso permitirá que você valide as entradas imediatamente e forneça feedback ao usuário de que algo está errado.
O segundo passo é validar os dados usando PHP. O WordPress tem várias funções de validação integradas , então eu começaria por aí e, se você não encontrar o que precisa, basta criar a lógica de que precisa.
fonte