Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dantetesta/c950a52f72b64bcaf6c596d3286775cc to your computer and use it in GitHub Desktop.
Save dantetesta/c950a52f72b64bcaf6c596d3286775cc to your computer and use it in GitHub Desktop.
Hook que Valida Existencia de um Metafield no CPT ou CCT do JetEngine com Jetformbuilder
add_filter( 'jet-form-builder/custom-filter/validar_metafield', 'validar_metafield_unico', 10, 3 );
function validar_metafield_unico( $result, $request, $action_handler ) {
global $wpdb;
// Recuperando valores do request
$type = sanitize_text_field( $request['type'] ); // Tipo: CPT ou CCT
$source = sanitize_text_field( $request['source'] ); // Nome do CCT ou CPT
$nome_metafield = sanitize_text_field( $request['metafield'] ); // Nome do metafield a verificar
$valor_metafield = sanitize_text_field( $request[$nome_metafield] ); // Valor do metafield
if ( $type == 'CPT' ) {
// Lógica para Custom Post Types
$tabela_meta = $wpdb->prefix . 'postmeta';
$consulta_existente = $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(*) FROM $tabela_meta
WHERE meta_key = %s AND meta_value = %s AND post_id IN (
SELECT ID FROM {$wpdb->posts} WHERE post_type = %s
)",
$nome_metafield, $valor_metafield, $source
));
} elseif ( $type == 'CCT' ) {
// Lógica para Custom Content Types
$tabela_compradores = $wpdb->prefix . $source;
$consulta_existente = $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(*) FROM $tabela_compradores WHERE $nome_metafield = %s",
$valor_metafield
));
} else {
return $result; // Tipo desconhecido, retorna resultado sem alterações
}
if ( $consulta_existente > 0 ) {
// Mensagem de erro personalizável incluindo o nome do campo
$mensagem_erro = "O valor declarado no campo '$nome_metafield' já existe!";
// Configurar a resposta JSON em caso de valor existente
$response = array(
'status' => 'failed',
'message' => "<div class='jet-form-builder-message jet-form-builder-message--error'>$mensagem_erro</div>",
);
wp_send_json( $response );
}
return $result; // Retorna $result se a validação for bem-sucedida
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment