Hola, tengo un plugin "REDi Restaurant" que sirve para hacer reservas de mesas para mi restaurante, el tema es que lo guardo todo en su base de datos con un API y yo no tengo ningun dato en mi base de datos. Como necesito tenerlas en una tabla, me puse en contacto con el desarrollador y me dijo donde insertar el codigo dentro de una funcion en su plugin, el problema sera cuando se actualize, que se va a machacar todo.
No tengo grandes conocimientos, pero he leido algo de hooks o de snippets. Veo que el codigo que he añadido esta dentro de una función bastante larga.
Como lo hariais?
Hola Jacint.
¿ Puedes indicarnos qué función es la que añadiste ?
Si es una función podrias crear un tema hijo de tu plantilla y añadir el código en el archivo Functions.php
-> https://www.webempresa.com/blog/crear-temas-hijo-child-themes-en-wordpress.html
Si lo tienes que realizar por Hooks se complica un poco:
Un saludo
Hola Pepe,
Dentro de su /wp-content/plugins/redi-restaurant-booking/redi-restaurant-booking.php hay una funcion donde se manda sus datos por api a su servidor, luego yo introduzco este codigo para que me guarde tambien los datos en mi base de datos:
global $wpdb;
$reservationlocal = array(
'reservation_number' => (int)$reservation['ID'] ,
'nom' => self::GetPost('UserName'),
'telefon' => self::GetPost('UserPhone'),
'email' => self::GetPost('UserEmail'),
'data' => date('Y-m-d', $startTimeInt),
'hora' => date('H:i', $startTimeInt),
'persones' => $persons,
'poblacio' => str_replace('_', '-', self::GetPost('lang')),
'observacions' => $comment,
'creat' => $currentTimeISO,
'prepagament' => $paymentMode ? 'true' : 'false');
//for next per camps variables (max 3 camps)
$parameters = array();
$custom_fields = array();
$custom_fields = $this->redi->getCustomField( self::lang(), $placeID );
$numerocamp = 0;
foreach ($custom_fields as $custom_field)
{
if ( isset( $_POST[ 'field_' . $custom_field->Id ] ) )
{
++$numerocamp;
$parameters= array(
'camp'. $numerocamp => $custom_field->Name,
'tipus'. $numerocamp => $custom_field->Type,
'valor'. $numerocamp =>
$custom_field->Type === 'text' ?
self::GetPost( 'field_' . $custom_field->Id ) : (self::GetPost( 'field_' . $custom_field->Id ) === 'on' ? 'true' : 'false'));
if (!empty($parameters))
{
$reservationlocal = array_merge ($reservationlocal,$parameters);
}
}
}
$taula = $wpdb->prefix.'CAIXAREGAL';
$wpdb->insert( $taula, $reservationlocal);
He provado de copiar toda la funcion donde yo pego mi codigo en el plugin de snipped code, pero no me hace caso. El tema child que tengo no se que le pasa que al activarlo, wordpress me da un error general y entra en modo de fallos.
El tema de los hooks me gusta mas, pero entiendo que el propietario del pluguin deberia introducir un hook dentro del codigo?
Hola Jacint,
Lo que podrías intentar hacer es hacer un duplicado del complemento y cambiar el nombre de la carpeta y la información en el encabezado del plugin (para que WP no intente actualizarlo). Mantenga ambos instalados pero con el original desactivado (no puede tener ambos activos al mismo tiempo). Luego, cuando se actualiza el plugin original, puedes usar una herramienta de comparación de archivos (por ejemplo, el comando diff de Linux) para ver qué ha cambiado y qué necesita actualizar para alinear su copia con el original.
O bien, puedes comunicarse con el desarrollador del complemento y preguntarles si hay una manera de cambiar lo que necesita sin editar el código.
Saludos.
Gracial bulmaro, a ver si el desarrollador me pudiera dar una solucion con hook o algo así, porque no puedo estar pendiente de si se actualiza y me machaca el codigo. Me gustaria dejarlo automatizado. gracias
Hola Jacint,
Excelente, aunque podrías crear un duplicado del plugin creando una copia de la carpeta del mismo y modificando los datos del encabezado del plugin, esto en lo que el desarrollador te ofrece alguna solución.
Saludos 🙂
Hola Jacint,
Debes acceder a la carpeta del plugin y buscar en algun archivo de extension .php algo como esto:
/**
* Plugin Name: Everest Forms
* Plugin URI: https://wpeverest.com/wordpress-plugins/everest-forms/
* Description: Drag and Drop contact form builder to easily create simple to complex forms for any purpose. Lightweight, Beautiful design, responsive and more.
* Version: 1.6.4
* Author: WPEverest
* Author URI: https://wpeverest.com
* Text Domain: everest-forms
* Domain Path: /languages/
*
* @package EverestForms
*/
Luego modificas:
/**
* Plugin Name: Mi plugin personalizado
* Plugin URI: https://www.miweb.com
* Description: Drag and Drop contact form builder to easily create simple to complex forms for any purpose. Lightweight, Beautiful design, responsive and more.
* Version: 1.6.4
* Author: Bulmaro
* Author URI: https://wpeverest.com
* Text Domain: everest-forms
* Domain Path: /languages/
*
* @package EverestForms
*/
Saludos 🙂