Inicio › Toolset Professional Support › [Resuelto] ARREGLOS FORMULARIO DE ENTRADA
This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.
Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
- | 7:00 – 14:00 | 7:00 – 14:00 | 7:00 – 14:00 | 7:00 – 14:00 | 7:00 – 14:00 | - |
- | 15:00 – 16:00 | 15:00 – 16:00 | 15:00 – 16:00 | 15:00 – 16:00 | 15:00 – 16:00 | - |
Supporter timezone: Europe/London (GMT+00:00)
Este tema contiene 28 respuestas, tiene 2 mensajes.
Última actualización por vincenzoD-2 hace 3 años, 2 meses.
Asistido por: Nigel.
Hola Nigel, Tengo unos problema con el formulario de entrada que me gustaría solucionar.
1. ¿Cómo podría hacer para que en el título de las entradas se ponga automáticamente el número de tel. del anunciarte?
2. ¿Hay una manera para que el anunciante no ponga títulos que ya han sido publicados?
3. ¿Hay una manera para que el anunciante no ponga descripciones que ya han sido publicadas?
Muchas Gracias por tu atención
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
Hola Vincenzo
Disculpe el retraso, no pude trabajar hoy.
Puedo ayudarte con la 1, es cuestión de usar la función del API cred_save_data para añadir el número de teléfono (que es un campo del formulario, ó del usuario?).
Para la 2 y la 3, ¿quieres decir que no pueden subir un anuncio con un título ó descripción exactamente igual que un anuncio anterior?
También debe ser posible con código y la función del API cred_form_validate.
Es un campo del formulario.
Para 2 y 3 me gustaría que si un usuario quiera poner mismo título o descripción de otro anuncio no pueda hacerlo y le salga un mensaje de error personalizado.
Muchas Gracias
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
Me equivoque, no es posible hacer una consulta por el contenido para comparar el contenido nuevo con el anterior.
(La "descripción" es el campo normál de contenido, ¿correcto?)
Puedes hacer la 1 así:
/** * Añadir número de teléfono al título */ add_action( 'cred_save_data','ts_custom_post_title', 10, 2 ); function ts_custom_post_title( $post_id, $form_data ) { //Editar $form_id = 123; $campo_tel = 'telefono'; if ( $form_data['id'] == $form_id ) { $tel = get_post_meta( $post_id, 'wpcf-'.$campo_tel, true ); $post = get_post( $post_id ); $title = $post->post_title . ' : ' . $tel; $args = array( 'ID' => $post_id, 'post_title' => $title ); wp_update_post( $args ); } }
(Debes editar el ID del formulario y el nombre del campo de teléfono.)
Puedes hacer la 2 así:
/** * Rechaza entradas con títulos existentes */ add_filter( 'cred_form_validate', 'ts_form_validate', 10, 2 ); function ts_form_validate( $error_fields, $form_data ) { // Editar $form_id = 123; list($fields,$errors) = $error_fields; if ( $form_data['id'] == $form_id ) { $title = $fields['post_title']['value']; $title_exists = get_posts( [ 'title' => $title ] ); if ( !empty( $title_exists ) ) { // Set error message for title $errors['post_title'] = 'Anuncio con este título ya publicado'; } } //return result return array($fields,$errors); }
¡Okay, Gracias Nigel!
Donde pongo el código en el "JS editor" del formulario?
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
No, es PHP.
Puedes añadir el código en Toolset > Configuración > Código personalizado.
Perfecto, ya que hablamos de formulario, habíamos puesto que un usuario puede poner hasta 3 anuncios.
¿Me gustaría que algunos usuarios (por ejemplo publicistas) pudieran publicar anuncios ilimitados es posible?
Muchas Gracias
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
¿Puedes recordarme de como imponemos tal restricción?
¿Hay algún código añadido?
Hola Nigel perdona si te contesto ahora no he podido antes.
Si habíamos puesto un PHP, limitando a 3 anuncios , y un bloque condicional que si el usuario intentaba poner el 4 anuncio le salía un mensaje con escrito "límite de anuncios alcanzado"
Aquí el hilo de referencia: https://toolset.com/es/forums/topic/como-limitar-el-numero-de-anuncio/
También, y la secunda vez que me pasa si pongo el código personalizado para poner el número en el título la página me va en error crítico. ¿Por qué? Tengo que restaurar el backup para poder hacerla funcionar de nuevo...
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
Bien, ahora recuerdo.
Me parece que podemos cambiar el shortcode que conta las entradas publicadas, y para ciertos usuarios siempre devuelve un valor menos de trés.
¿Pero cómo identificar tales ciertos usuarios?
Si tienes errores al añadir código, ¿qué son los errores? Los errores identificarán la causa.
1)Vale, podemos hacer esto: "Me parece que podemos cambiar el shortcode que conta las entradas publicadas, y para ciertos usuarios siempre devuelve un valor menos de trés."
Los usuario normales que no pueden hacer más que tres anuncios son perfiles "AUTOR" y los usuario que pueden hacer más de 3 es un perfil "COLABORADOR" . En teoría podríamos poner el perfil de "COLABORADOR" desde back and nosotros.
En teoría un publicador nos contacta para varios anuncios así que nosotros de administración podríamos cambiar directamente el de "AUTOR" a "COLABORADOR" cuando nos contacte.
2)Por el tema del error no me da ningún error de hecho siempre hago un check.
¿Puede ser que pase porque creo más códigos personalizados con el mismo campo de teléfono?
Me explico mejor creo un código personalizado para el formulario Gratis, uno para el formulario Premium y uno para el formulario de Edición de anuncio porque cada form tiene ID distinto...
¿Será esto que crea conflicto?
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
He modificado el código del shortcode para devolver cero cuando el usuario tiene rol 'colaborador', así:
add_shortcode('count-posts', function ($atts = []) { // provide defaults $atts = shortcode_atts( array( 'types' => 'post', ), $atts ); $post_types = explode( ",", $atts['types'] ); $user = wp_get_current_user(); $count = count_user_posts( $user->ID, $post_types, true ); if ( in_array( 'colaborador', $user->roles ) ){ $count = 0; } return $count; });
Sobre el error, es poco probable que resulta por referir al mismo campo varios veces.
Más probable sería un error por que declaras una función con un nombre ya utilizado, ¿puede ser posible?
Hola,
1) He sustituido el código y hecho una prueba con un usuario colaborador, pero sigue limitando el número de anuncios. ¿Debo cambiar algo en el bloque condicional?
2) En teoría el nombre de la función varia, unque porque si pusiera el mismo nombre me daría error desde un principio. Es posible poner más que un form en el mismo código que tenga el mismo campo? Por ejemplo:
"//Editar
$form_id = 123, 124, 125;
$campo_tel = 'telefono';"
Idiomas: Inglés (English ) Español (Español )
Zona horaria: Europe/London (GMT+00:00)
1. A ver si funciona el código correctamente: como prueba, añade el shortcode directamente a la página (para imprimir su resulta) y comprueba que sale correcto.
2. Puedes re-utilizar el mismo código en varios formularios, así:
if ( in_array($form_data['id'], array( 123, 124, 125 ) ) ) { // el código }