Eu tenho um arquivo personalizado chamado xxxx_url
. xxxx_url
deve ser único.
Então, antes de publicar o post, quero ter certeza de que xxxx_url
é único ou não? Se não for exclusivo, a publicação da postagem deve ser rejeitada.
Eu tentei publish_post
. Mas essa não é a correta, pois é acionada quando publicamos a postagem. Quero executar meu código antes da publicação.
custom-field
filters
hooks
actions
Eu sou a pessoa mais estúpida
fonte
fonte
132_url
onde132
está o ID da postagem. Do que você sempre tem um valor único aqui. Além disso: campos personalizados devem ser salvos nasave_post
ação. Nesta ação, você pode verificar o campo personalizado (se não estiver vazio e tiver um valor exclusivo, por exemplo) e com base nissoupdate_post_meta
ou não. Eu acho que você também pode verificar o campo personalizado e, se ele não tiver um valor exclusivo, definapost-status
comodraft
ou algo mais, para desativar a publicação. Caso contrário, acho que você precisa do jQuery para fazer isso.Respostas:
No início de
wp_insert_post
, a função que salva / atualiza uma postagem, existe um filtro chamadowp_insert_post_empty_content
. Por padrão, esse filtro verifica se os campos de título, editor e trecho estão todos vazios; nesse caso, o processo de salvamento será interrompido.No entanto, como todos os campos a serem salvos são passados para esse filtro, você pode expandir esse filtro para incluir qualquer outro teste para determinar se a postagem deve ser considerada vazia. Seria algo como isto:
Nota: a função deve retornar 'true' para interromper o processo de salvamento.
Se o campo personalizado não for exclusivo, você também poderá ecoar um aviso.
fonte
wp_insert_post_empty_content
é semanticamente destinado ao conteúdo vazio . Dito isto, também não encontrei nenhum gancho semanticamente adequado para isso.wp_insert_post_valid_content
para expressar isso, mas, de resto, ele está exatamente no lugar certo.wp_insert_post_empty_content
filtro?Que tal usar o AJAX para verificar a exclusividade antes mesmo de enviar a publicação para publicação?
Embora o código não seja testado, ele deve funcionar. Você pode precisar jogar com ele para obter o resultado desejado.
fonte
Gostaria de conectar- me ao filtro wp_insert_post_data e lidar com isso da maneira menos invasiva possível, porque, como eu entendo, você não deseja bloquear a inserção de uma postagem, apenas deseja evitar a publicação de uma postagem com meta-valores duplicados.
Não posso poupar muito neste caso, porque você não compartilhou nenhum código, mas aqui está um pseudo-código de um filtro que funcionaria:
Outra grande coisa sobre esse filtro é que ele é separado dos anexos
wp_insert_attachment_data
.Espero que ajude, e faça o que fizer, parece incrível!
fonte
$data['post_status']
houverpublish
e o usuário estiver atualizando? Fazer a postagem comodraft
criar um404
problema para essa postagem?A verificação deve ir para
wp_insert_post
. Esse gancho é acionado sempre que a postagem é publicada ou editada.Lá, você pode fazer uma consulta personalizada para verificar se há alguma postagem que já tenha o mesmo
xxxx_url
valor ou não.fonte
wp_insert_post
ação é acionada depois que uma postagem é salva, e não pode bloquear a publicação ou a inserção da postagem.If it isn't unique it should reject publishing post.
na minha pergunta.