Created
December 21, 2023 02:13
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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