Home › Toolset Professional Support › [Resolved] Limitar el agregar un numero de Fichas a un Usuario Logueado.
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)
Tagged: Toolset Starter Theme
This topic contains 14 replies, has 2 voices.
Last updated by angelR-2 5 years, 10 months ago.
Assisted by: Nigel.
La idea es que cada Empresa y Profesional que este “logeado” pueda agregar sus propias fichas, pero limitándoles a agregar más de las permitidas.
Posteriormente las podrán editar, pero no Eliminarlas.
Muchas gracias.
Un Saludo.
Y que tengáis un buen día.
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
Hola
Tienes un formulario para publicar entradas que tiene un campo de fichas donde se puede añadir multiples, ¿verdad?
Para limitar cuantas fichas pueden agregar tendrás que incluir código particular en el sección custom JS de cada formulario afectado (p.j. el formulario para publicar entradas y el de editar entradas).
( function( $ ) { $( document ).ready( function(){ $('.js-wpt-field-items').on('click', '.wpt-repdelete,.js-wpt-repadd', function(e){ var max_reps = 5; var target = $(event.target); if ( $(event.target).is('.js-wpt-repadd') ){ max_reps --; } else { max_reps ++; } fields = $('.wpt-repctl'); if ( fields.size() >= max_reps ){ $('.js-wpt-repadd').hide(); } else { $('.js-wpt-repadd').show(); } }) }); })( jQuery );
Puedes editar el limite por cambiar el valor de "max_reps".
Hola.
He colocado el código como me habéis indicado pero sigo pudiendo crear fichas aunque lo he limitado a 3.
Te envió dos capturas de pantalla.
Un saludo.
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
¿He mal entendido?
Pensaba que querías limitar cuantos campos de ficha (archivo) se podría agregar a un formulario, pero ahora me parece que lo que quieres es limitar cuantas veces pueden enviar un formulario para publicar un tipo de entrada "Ficha de Empresa".
¿Es correcto?
Exactamente, limitar cuantas veces pueden enviar un formulario para publicar un tipo de entrada como "Fichas de Empresa".
Perdona por no habértelo explicado bien.
Si me puedes indicar como hacerlo, te lo agradecería mucho.
Un Saludo
Que tengas un buen día.
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
Vale. Pues en este caso tendrás que usar el API de Forms y el filtro cred_form_validate: https://toolset.com/documentation/programmer-reference/cred-api/#cred_form_validate
Aquí tienes un ejemplo:
/** * Custom form validation */ function tssupp_form_validation($error_fields, $form_data) { $max = 3; $error = "You have already submitted the maximum number of posts"; if (in_array($form_data['id'], array(88))) { // Get posts of this type authored by current user $posts = get_posts(array( 'post_type' => $form_data['post_type'], 'author' => get_current_user_id(), 'post_status' => 'publish', 'nopaging' => true, )); $results = count($posts); //split error fields into separate arrays list($fields, $errors) = $error_fields; // tests if ($results >= 3) { $errors['post_title'] = $error; } $error_fields = array($fields, $errors); } return $error_fields; } add_filter('cred_form_validate', 'tssupp_form_validation', 10, 2);
Tendrás que editar las variables $max y $error y el ID del formulario pertinente (88 en este ejemplo).
Lamentablemente el error es poco editable, pero tendrás la funcionalidad querida.
Hola de nuevo.
En primer lugar te pido disculpas, he introducido el código que me has enviado, pero no me funciona, seguro que
algo estoy haciendo mal.
Nuestra web esta todavía en desarrollo y pensamos lanzarla a mitad del próximo mes de Marzo.
Te hemos creado un nombre de usuario como administrador para que puedas entrar y ver el tema.
Nota: Puedes agregar las fichas que creas conveniente para probar.
[edit]
Perdona mi atrevimiento, No se si vosotros hacéis esto a vuestros clientes.
Tenemos otros Proveedores de plugins que si lo han echo y nos han ayudado muchísimo.
Otro problema importante que tenemos es: AL AGREGAR: "Entradas, Empresas, Profesionales, Novedades y Promociones". "No suben las Imágenes", los demás campos si. "Anteriormente si lo hacían perfectamente".
Muchas gracias por toda la ayuda que aportáis a los que no somos muy expertos.
Un saludo afectuoso
Angel Reinosa
New threads created by Nigel and linked to this one are listed below:
https://toolset.com/forums/topic/split-problema-publicar-imagenes-por-un-formulario/
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
Hola Angel
¿Dónde has puesto el código?
Esperaba verlo en Toolset > Configuración > Código personalizado.
El problema de imágenes, ¿hablas de publicar entradas por un formulario del front-end?
El código lo he colocado en el formulario "Agregar Ficha de Empresa" y en
"Agregar Ficha de Profesional"." en la parte del "JS editor" .
No entiendo como ponerlo en: Toolset > Configuración > Código personalizado.
El problema de las imágenes: Si hablo de publicar entradas por un formulario del front-end.
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
Hola Angel
Este código es PHP, no se puede agregarlo como si fuera JavaScript.
Tienes que añadir un snippet en Toolset > Configuración > Código personalizado, ó editar el archivo functions.php del tema.
(Es necesario editar el ID del formulario, "88" en la muestra.)
Voy a dividir el hilo para continuar con el tema de los imágenes.
Ok. Entendido.
Creando snippet "fichaempresa"
Te mando una captura de pantalla en la que puedes ver el código a la izquierda y a la derecha esta la ventana para introducirlo.
Por favor me podrías indicar, ¿como debería quedar el código dentro de esa ventana antes de guardarlo?.
Y si dejo todo lo que hay seleccionado. como:
Run always ( . ) A demanda ( )
Run context: Front-end (X) Administración de WordPress (X) Llamadas AJAX (X).
Luego tengo que crear otro igual para la Ficha para agregar Profesionales. "fichaprofesiona".
Gracias por tu paciencia.
Un saludo
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
Debe aparecer como se ve en el pantallazo (no olvides activar el snippet).
En lugar de repetir el código puedes modificarlo para que afecta a formularios multiples así:
/** * Custom form validation */ function tssupp_form_validation($error_fields, $form_data) { $max = 3; $error = "Ya has superado el numero maximo de envíos"; if (in_array($form_data['id'], array( 243, 299 ))) { // Get posts of this type authored by current user $posts = get_posts(array( 'post_type' => $form_data['post_type'], 'author' => get_current_user_id(), 'post_status' => 'publish', 'nopaging' => true, )); $results = count($posts); //split error fields into separate arrays list($fields, $errors) = $error_fields; // tests if ($results >= 3) { $errors['post_title'] = $error; } $error_fields = array($fields, $errors); } return $error_fields; } add_filter('cred_form_validate', 'tssupp_form_validation', 10, 2);
(Pero todos tendrán el mismo limite el mensaje de error.)
Hola de nuevo.
He creado dos snippets "fichaempresa"y "fichaprofesional" porque los limites son diferentes para cada formulario.
He activado el de "fichaempresa" que limita a tres las fichas a agregar.
Desde el front-end he tratado de agregar la que seria la cuarta ficha y este es el error que he recibido:
"El servidor encontró un error interno o una mala configuración y no pudo completar su solicitud.
Póngase en contacto con el administrador del servidor e infórmeles de la hora en que ocurrió el error y de cualquier cosa que haya hecho que pueda haber causado el error.
Puede haber más información sobre este error en el registro de errores del servidor.
Además, se encontró un error 500 Error interno del servidor al intentar usar un ErrorDocument para manejar la solicitud.
Un saludo"
Otra cosa. No puedo activar el snippet "fichaprofesional" , Si lo hago ya no veo la web.
Lo tengo desactivado.
Un saludo
Ángel Reinosa
Languages: English (English ) Spanish (Español )
Timezone: Europe/London (GMT+00:00)
Hola Angel
Primero, no se puede declarar funciones con el mismo nombre, entonces será necesario cambiar por lo menos uno de los snippets, p.j.:
function tssupp_form_validation_profesional($error_fields, $form_data) { ... ... add_filter('cred_form_validate', 'tssupp_form_validation_profesional', 10, 2);
(Nota que tenia un pequeño fallo en el código, debes cambiar esta linea así:
if ($results >= $max) {
para que coge el valor max declarado al principio.)
En la copia del sitio que tengo funcionaba el código (ve pantallazo).
Si no funciona en el sitio tuyo, el mensaje indica que se encuentra errores de PHP. Por favor inspecciona tus registros de errores y dime lo que encuentras.
Puede ser necesario hacer una prueba con todos los plugins menos Toolset desactivado para ver si existe un conflicto entre Toolset y otro plugin.
My issue is resolved now. Thank you!