Paginas web en Marbella

Internet Marketing

¿Qué se necesita para escalar WooCommerce?

Una de las preguntas más comunes que escucho mucho sobre WordPress y el comercio electrónico gira en torno a la noción de WooCommerce y su capacidad de escalar. «¿Puedes escalar WooCommerce?» la gente me pregunta Y mi respuesta siempre es sí.

Pero nunca es tan simple como eso, ¿verdad?

La gente quiere saber si solo estás siendo amable, esperanzado o simplemente no tienes la experiencia suficiente para saber si WooCommerce realmente puede manejar una gran cantidad de tráfico.

Para mí, que trabajo con WooCommerce y clientes desde hace algunos años, la escala ha sido un objetivo en movimiento. En un momento, ver una tienda obtener miles de visitas por hora era un tema de conversación en torno a la escala. Luego, fueron toneladas de pedidos simultáneos. Y, finalmente, los requisitos de escala realmente locos, a fines de 2015.

Para entrar en el tema, primero tenemos que definir algunos términos.

¿Cómo se define «escala»?

La escala puede significar muchas cosas diferentes para diferentes personas.

Algunas personas hablarán sobre la escala en el mundo de las páginas vistas. Cuántas vistas de página por día (u hora) están ocurriendo en un sitio de WooCommerce. La verdad es que, con el tipo correcto de estrategias de almacenamiento en caché, esta es una métrica que no nos ayudará mucho cuando se trata de escalar. A menos que no pueda almacenar en caché ninguna parte de sus páginas, los recuentos de páginas vistas no son un buen indicador de escala.

Otros usarán los ingresos por día como una métrica de escala. Desafortunadamente, esto termina siendo una comparación de manzanas con naranjas porque los ingresos de los sitios que venden papel de lija a $ 0.40 por hoja y las tiendas que venden mochilas a $ 300 cada una realmente no se pueden comparar.

Te acercas cuando hablas de volumen de pedidos. Pero el problema con los pedidos es que las personas pueden comenzar y ordenar y luego abandonarlo, ya sabes, abandonar el carrito. Y eso significa que no se contará en su evaluación de esa métrica. Porque la mayoría de las personas, cuando hablan de órdenes, hablan de órdenes cerradas.

Entonces, ¿qué métrica uso (y recomiendo)? Añade al carrito eventos por hora (o minuto). Esto pone a todos los sitios en igualdad de condiciones. Desafortunadamente, esta no es una métrica que aparece directamente del sistema de informes de WooCommerce. Tendrá que trabajar un poco para capturar y monitorear la métrica. Pero creo que es la mejor manera de evaluar el comportamiento en un sitio, al tiempo que observa la correlación con el tráfico y el volumen de pedidos.

Una vez que tenga la métrica correcta, puede comenzar a medir dónde se encuentra y determinar qué tipo de cosas quiere hacer para llegar a donde quiere estar. Para mi cliente en 2015, pasamos un año trabajando con ellos y su sitio (y código) para lograr 2000 eventos de agregar al carrito por minuto.

¡Eso es lo que yo llamo escala!

¿Qué áreas necesitan escalar?

Navegación posterior a la tienda

Uno de los errores más comunes que cometen las personas con su sitio WooCommerce es creer que después de completar un pedido, las personas abandonarán el sitio. Es un error común porque a todos nos gusta pensar transaccionalmente. Así que vas a la tienda, haces tu compra y luego te vas.

Pero algunas personas finalizan su compra y pueden quedarse, explorando la tienda nuevamente. Solo que esta vez, todavía están conectados. Y eso significa que no hay nada en caché. Y cada clic y página que visitan está llamando a su base de datos.

Entonces, lo primero que debe observar, que es realmente simple, es asegurarse de que después de completar un pedido, desconecte a las personas para que puedan navegar por la tienda almacenada previamente en caché sin causar problemas de escala.

Estrategias de almacenamiento en caché para páginas de categorías y menús

Debido a que es un sitio de comercio electrónico, muchos desarrolladores simplemente se saltan el almacenamiento en caché por completo. No quieren preocuparse de que puedan configurar incorrectamente algo como Varnish. Entonces, al final, nada se almacena en caché, y ese es otro error. Una tonelada del sitio aún puede beneficiarse directamente desde una perspectiva de almacenamiento en caché, incluso una agresiva.

Gran parte del catálogo se puede almacenar en caché y solo necesita actualizar las cosas si alguien realiza un cambio en la definición del producto. Y en lugar de usar WooCommerce para crear sus páginas de categoría, puede crear las páginas que desee y eliminar más consultas allí. Y si estamos hablando de almacenar en caché y limitar las llamadas de consulta, mire sus menús y vea cuántos de ellos deben ser dinámicos.

La mesa Postmeta

Cada pedido que se escribe en su base de datos está colocando todos los datos del pedido en su tabla postmeta. Esta tabla crece rápidamente y el número de consultas aumenta. Una cosa que podría considerar es interceptar las órdenes y escribirlas en una sola fila de varias columnas. Pero si ese tipo de cambio lo asusta (y entiendo perfectamente por qué lo haría), también podría considerar hacer un cambio de tabla en la base de datos que ayude a que los índices funcionen mejor. ¡Esto puede tener un impacto inmediato!

La página Mis cuentas

Sé que a menudo hemos encontrado que la página Mis cuentas es un lugar donde pueden ocurrir toneladas de optimización del rendimiento. Piénselo por un segundo: los clientes vienen aquí para verificar cosas sobre sus pedidos, pero las llamadas consultan todo, todos sus datos históricos. Y eso sucede por qué otros están tratando de pedir cosas.

Lo que vimos fue que trabajar en estas llamadas y evaluarlas se traduciría en una reducción masiva de los retrasos en el rendimiento, y eso resultó en una mayor escalabilidad inmediata.

Cambiar el motor de consultas por completo

¿Qué pasaría si pudiera cambiar la forma en que se ejecutan las consultas por completo? ¿Y si pudieras hacer todo más rápido? ¿Con un solo cambio? Eso sería casi demasiado bueno para ser verdad, ¿verdad? Pues tienes razón, nunca es solo una cosa. Pero implementar ElasticSearch y hacer que haga muchas de las consultas por usted podría proporcionar grandes ganancias.

¿La escala de WooCommerce requiere mucho código personalizado?

No son toneladas de código personalizado el problema. El verdadero problema para escalar su sitio WooCommerce es la experiencia. Si nunca lo has hecho, es probable que no sepas cómo hacerlo. De hecho, ni siquiera sabes qué buscar. Entonces, si bien es posible que necesite un poco de código, lo que probablemente necesite son algunos recursos recomendados.

Déjame ayudarte con eso. Conozco bien cada una de estas empresas y confío en ti en todas sus manos.

Una última cosa…

Por supuesto, también debo mencionar que si pasar mucho tiempo pensando en cómo escalar WooCommerce no es en lo que desea invertir su tiempo, creamos un producto de alojamiento de WooCommerce administrado que lo ayudará a ejecutar su sitio de WooCommerce a escala. Automáticamente. ¡Todo lo anterior, y más, está incluido!

php

Una clase PHP para la pasarela de pagos redsys / sermepa

La clase sermepa actualmente Redsys sirve para generar el formulario que se comunicará con la pasarela de pagos que usan muchos bancos, como Santander, Sabadell, Lacaixa, etc.

Es una versión que irá creciendo y actualizándose poco a poco y mejorándolo.

https://github.com/ssheduardo/sermepa

Requerimientos mínimos

PHP 5 >= 5.3.0, PHP 7.1, 8.0

Instalación

Si usas composer tienes 2 opciones

1.- Por línea de comandos

composer require sermepa/sermepa

2.- Creas o agregas a tu archivo composer.json la siguiente dependencia:

{
   "require": {
      "sermepa/sermepa": "^1.3.2"
   }
}

Luego ejecutas:

composer update

Si en caso contrario no usas composer, bastará con clonar el repositorio

git clone https://github.com/ssheduardo/sermepa.git

¿Cómo usar la clase?

Ejemplo:

//Si usas composer
//include_once('vendor/autoload.php');

//Si clonaste la clase
//include_once('sermepa/src/Sermepa/Tpv/Tpv.php');

try{
    //Key de ejemplo
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(10,600));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco
    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setMethod('C'); //Solo pago con tarjeta, no mostramos iupay
    $redsys->setNotification('http://localhost/noti.php'); //Url de notificacion
    $redsys->setUrlOk('http://localhost/ok.php'); //Url OK
    $redsys->setUrlKo('http://localhost/ko.php'); //Url KO
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setTradeName('Tienda S.L');
    $redsys->setTitular('Pedro Risco');
    $redsys->setProductDescription('Compras varias');
    $redsys->setEnvironment('test'); //Entorno test

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;

Con esto generamos el form para la comunicación con la pasarela de pagos.

Enviar datos de la tarjeta

Si queremos enviar los datos de la tarjeta para que no nos lo solicite la pasarela de pagos, podemos hacerlo de la siguiente forma.

try{
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(10,600));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco
    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setMethod('C'); //Solo pago con tarjeta, no mostramos iupay
    $redsys->setNotification('http://localhost/noti.php'); //Url de notificacion
    $redsys->setUrlOk('http://localhost/ok.php'); //Url OK
    $redsys->setUrlKo('http://localhost/ko.php'); //Url KO
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setTradeName('Tienda S.L');
    $redsys->setTitular('Juan Risco');

    $redsys->setPan('4548812049400004'); //Número de la tarjeta
    $redsys->setExpiryDate('2012'); //AAMM (año y mes)
    $redsys->setCVV2('123'); //CVV2 de la tarjeta

    $redsys->setEnvironment('test'); //Entorno test

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $form = $redsys->createForm();
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}
echo $form;

Pago con referencia

Esta operativa nos permite guardar los datos de la tarjeta. SIS almacena la tarjeta y devuelve la referencia que deberá ser almacenada por el comercio.

Imaginemos que en el ejemplo anterior, queremos guardar los datos de la tarjeta, solo bastará con agregar el método setIdentifier(). Cuando se haga el llamado a la url de notificación, éste nos devolverá Ds_Merchant_Identifier y Ds_ExpiryDate.

//Para una nueva referencia agregar este método al ejemplo anterior
$redsys->setIdentifier();

//En la url de notificación nos devolverá algo como esto
Array
(
    [Ds_Date] => 17%2F02%2F2022
    [Ds_Hour] => 23%3A25
    [Ds_SecurePayment] => 1
    [Ds_Card_Number] => 491801******4602
    [Ds_ExpiryDate] => 3212
    [Ds_Merchant_Identifier] => 2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c
    [Ds_Card_Country] => 724
    [Ds_Amount] => 0
    [Ds_Currency] => 978
    [Ds_Order] => 1645136683
    [Ds_MerchantCode] => 999008881
    [Ds_Terminal] => 001
    [Ds_Response] => 0000
    [Ds_MerchantData] =>
    [Ds_TransactionType] => 0
    [Ds_ConsumerLanguage] => 1
    [Ds_AuthorisationCode] => 005090
    [Ds_Card_Brand] => 1
    [Ds_Merchant_Cof_Txnid] => 2202172334011
    [Ds_ProcessedPayMethod] => 1
    [Ds_Control_1645136701458] => 1645136701458
)

Ahora bien, si queremos realizar otro cobro sin que nos pidan los datos de la tarjeta para ese mismo usuario, bastará con pasar el Ds_Merchant_Identifier anterior en el método setIdentifier().

Cada banco tiene un sistema de seguridad a través de un código de SMS, tarjeta de coordenadas, etc. que se mostrará para completar la transacción.

$redsys->setIdentifier(2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c);

//En la url de notificación nos devolverá algo como esto
Array
(
    [Ds_Date] => 17%2F02%2F2022
    [Ds_Hour] => 23%3A28
    [Ds_SecurePayment] => 1
    [Ds_Card_Number] => 491801******4602
    [Ds_Merchant_Identifier] => 2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c
    [Ds_Card_Country] => 724
    [Ds_Amount] => 12000
    [Ds_Currency] => 978
    [Ds_Order] => 1645136909
    [Ds_MerchantCode] => 999008881
    [Ds_Terminal] => 001
    [Ds_Response] => 0000
    [Ds_MerchantData] =>
    [Ds_TransactionType] => 0
    [Ds_ConsumerLanguage] => 1
    [Ds_AuthorisationCode] => 078737
    [Ds_Card_Brand] => 1
    [Ds_Merchant_Cof_Txnid] => 2202172334011
    [Ds_ProcessedPayMethod] => 1
    [Ds_Control_1645136925978] => 1645136925978
)

Si no queremos que nos muestre ninguna pantalla y directamente realice el pago debemos hacer uso del método setMerchantDirectPayment():

$redsys->setMerchantDirectPayment(true);

También podemos hacer los cobros recurrentes a traves de Rest.

try{
    //Key de ejemplo
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $redsys = new Sermepa\Tpv\Tpv();
    $redsys->setAmount(rand(20,80));
    $redsys->setOrder(time());
    $redsys->setMerchantcode('999008881'); //Reemplazar por el código que proporciona el banco

    $redsys->setCurrency('978');
    $redsys->setTransactiontype('0');
    $redsys->setTerminal('1');
    $redsys->setIdentifier('2214a9c5ac0bd6e0fg476e6b3468ac4fa38a592c');
    $redsys->setVersion('HMAC_SHA256_V1');
    $redsys->setEnvironment('restTest'); //Rest entorno test
    $redsys->setMerchantCofIni('N');
    $redsys->setMerchantDirectPayment(true);

    $redsys->setMerchantCofTxnid(2202172334011);

    $signature = $redsys->generateMerchantSignature($key);
    $redsys->setMerchantSignature($signature);

    $response = json_decode($redsys->send(), true);

    $parameters = $redsys->getMerchantParameters($response['Ds_MerchantParameters']);
    $DsResponse = $parameters["Ds_Response"];
    $DsResponse += 0;
    if ($redsys->check($key, $response) && $DsResponse <= 99) {
        //Si es todo correcto ya podemos hacer lo que necesitamos, para este ejemplo solo mostramos los datos.
        print_r($parameters);
    } else {
        //acciones a realizar si ha sido erroneo
    }

} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}

Comprobación de Pago

Podemos comprobar si se ha realizado el pago correctamente. Para ello necesitamos setear la clave del banco y pasar la variable $_POST que nos devuelve en la URL de notificación o de retorno. Tener en cuenta que debemos realizar esta comprobación en la url de notificación. Por ejemplo, en el fichero que es llamado por la URL de retorno:

try{
    $redsys = new Sermepa\Tpv\Tpv();
    $key = 'sq7HjrUOBfKmC576ILgskD5srU870gJ7';

    $parameters = $redsys->getMerchantParameters($_POST["Ds_MerchantParameters"]);
    $DsResponse = $parameters["Ds_Response"];
    $DsResponse += 0;
    if ($redsys->check($key, $_POST) && $DsResponse <= 99) {
        //acciones a realizar si es correcto, por ejemplo validar una reserva, mandar un mail de OK, guardar en bbdd o contactar con mensajería para preparar un pedido
    } else {
        //acciones a realizar si ha sido erroneo
    }
} catch (\Sermepa\Tpv\TpvException $e) {
    echo $e->getMessage();
}

https://github.com/ssheduardo/sermepa

Download-Official-Remix-OS-

Como descargar e instalar Remix OS 2

1. Prepara todos los archivos

En Windows, hazte tanto con la herramienta USB de Remix como con la ISO de Remix OS. La herramienta ocupa poco más de 4 MB, mientras que la ISO son 2 Gb, que la persona que lo filtró ha comprimido en algo más de 600 MB.

El Windows Defender de Windows 10 se empeña en detectar la herramienta de grabación USB como malware, así que la borrará una y otra vez nada más que termines de descargarla, a no ser que desactives la protección en tiempo real (bajo tu propia responsabilidad, claro).

Si tienes la ISO en formato comprimido, descomprímela en alguna carpeta de tu disco duro.

2. Formatea tu pendrive en FAT32

Necesitarás un pendrive de gran capacidad para grabar Remix OS. Si ya está formateado en FAT32, no necesitas hacer nada más (salta al paso 3), pero si no es así, debes formatearlo primero.

Para comprobar el formato de tu memoria USB, ve al Administrador de archivos, haz clic derecho y elige Propiedades. En la carpeta General aparece el sistema de archivos, que generalmente será FAT32 o NTFS.

Si tu memoria está formateada en NTFS, haz clic derecho sobre ella en el Administrador de archivos y elige Formatear. En sistema de archivos, elige FAT32. Si está activado el Formateo rápido (recomendado) el proceso toma apenas un par de segundos.

3. Graba la ISO en la memoria

De vuelta a los archivos que descargaste antes, inicia la utilidad USB de Remix (remix-usb-tool.exe). En el apartado ISO File, pulsa Browse para seleccionar la imagen ISO que descomprimiste en alguna carpeta de tu disco duro.

En USB Disk, elige la letra de la unidad de la memoria USB. Asegúrate de que es la correcta, si bien la aplicación parece detectarla automáticamente por ti. Cuando estés listo, pulsa OK para que comience la copia de los archivos.

Aquí es el momento de que tu puerto USB 3.0 y memoria USB se luzcan. El proceso tarda unos cuantos minutos en completarse. Paciencia.

4. Inicia tu PC desde la memoria USB

Reinicia tu PC y asegúrate de que se inicia desde la memoria USB. La mayoría de las BIOS te permiten seleccionar el orden de los dispositivos de arranque, pero además es cada vez más común que el sistema te permita cambiarlo fácilmente pulsando alguna tecla durante el arranque (por ejemplo, F2). Si tienes dudas, consulta el manual de tu PC o placa base.

En Windows 10 a veces cuesta un poco más hacer un reinicio completo, pero lo puedes forzar desde las Opciones > Actualizaciones y Seguridad > Recuperación > Inicio avanzado.

5. Inicia la instalación

Si todo ha ido bien, una ventana te dará la bienvenida a la instalación de Remix OS, dándote la opción de elegir entre un modo invitado o residente.

El modo invitado te permite probar el sistema operativo sin compromiso, pero no guardará tu información y aplicaciones cuando termines de usarlo. El modo residente sí guarda esta información.

Yo he elegido modo Residente, lo cual inicia la instalación que, una vez más, tomará unos cuantos minutos. Ten paciencia, ya estás muy cerca de poder probar esta curiosa versión de Android.

6. Configura Remix OS

Enhorabuena, ya tienes Remix OS listo para usar, pero antes de nada, al igual que cuando inicias Android por primera vez en un teléfono, tienes que establecer unos cuantos ajustes.

Lo primero es el idioma (inglés o chino), después tendrás el acuerdo de licencia de rigor y, por último, pulsando el botón Start ya podrás empezar a usar Remix OS 2.0 en tu PC.

Etiquetas especiales Contact Form 7

Como guardar una base de datos de formularios recibidos con Contact Form 7 en WordPress

¿Por qué deberías guardar los mensajes en la Base de Datos?

Te listo a continuación algunas ideas de por qué deberías implementar esta solución:

Leer más
  • Problemas de correo: Los servidores de correos pueden tener fallos o caídas impidiendo que los emails lleguen a su destino. Con esta solución podrías tener una copia del mensaje en tu base de datos, a pesar de que no te haya llegado ningún correo.
  • Exportar información: Tal vez necesites guardar estos datos para luego exportarlos y hacer algún seguimiento o análisis específico.
  • Libreta de direcciones: Tal vez necesites armar una agenda de todas las personas que te contactan para luego hacer un seguimiento (como un CRM).

Para todas estas situaciones usaremos el plugin «Flamingo» el cual se adapta a la perfección al «Contact Form 7» ya que está desarrollador por el mismo programador (Takayuki Miyoshi). Puedes descargarlo siguiendo este enlace

No tendrás que configurar NADA

Tal como lo lees, para utilizar este plugin no tienes que hacer nada más que instalarlo.

Una vez instalado, se creará un nuevo menú llamado «Flamingo» con los siguientes submenús:

Libreta de direcciones

En esta pantalla verás solamente los datos personales de las personas que envían sus mensajes a través de los distintos formularios de tu página Web.

En caso de que una persona envíe más de un formulario, no se duplica el registro, pero sí que se actualiza la columna de «Historial», desde donde podrás acceder a cada uno de los mensajes enviados.

También tienes el botón de «Exportar» el cual te permite rápidamente descargar todos los contactos en un fichero con formato .CSV tal como se muestra a continuación.

contactos.csv
"Correo electrónico","Nombre completo","Nombre","Apellidos" "jperez@gmail.com","Juan Pérez","","" "mgelves@gmail.com","mgelves","","" "pgonzalez@gmail.com","Pedro González","","" "wapuu@wordpress.example","Un comentarista de WordPress","",""

Mensajes Entrantes

Desde esta pantalla podrás ver y gestionar todos los mensajes que envían los usuarios a través de tus formularios.

Estos son algunos de los puntos más importantes de esta pantalla:

  1. Asunto: Por defecto Flamingo guarda el «Asunto» del formulario como título de los mensajes.
  2. Canal: Esta columna indica cuál es el formulario de origen del mensaje. Si haces clic en él puedes filtrar los mensajes por formularios.
  3. Exportar: Al igual que la página anterior puedes exportar los mensajes en un fichero con formato .CSV el cual tiene la siguiente estructura:
mensajes.csv
"your-name","your-email","your-subject","your-message","file-298","Fecha" "Juan Pérez","jperez@gmail.com","2do email que envío","Este es el segundo email que envío para revisar el historial.","","2020-05-05T15:49:44+00:00" "Juan Pérez","jperez@gmail.com","Prueba con fichero","Envío un formulario con una imagen.","600_162649732.jpeg","2020-05-05T15:25:41+00:00" "Pedro González","pgonzalez@gmail.com","Prueba de envío","Este es el cuerpo del mensaje","","2020-05-05T15:22:43+00:00"

Cómo cambiar los campos de los mensajes entrantes

Como te contaba en el punto anterior, los campos de los mensajes entrantes se guardan a partir de los campos [your-subject][your-name] y [your-email] que se crean por defecto cada vez das de alta un nuevo formulario.

Pero podrías cambiar estos valores para que se ajusten a los campos que hayas creado para tu proyecto. Solo tienes que ir a la pestaña de «Ajustes Adicionales» del formulario en cuestión y agregar el siguiente código pero con el ID de tus propios campos:

Pestaña de «Ajustes adicionales»
flamingo_email: "[email-usuario]" flamingo_name: "[nombre-usuario]" flamingo_subject: "[titulo-de-mensaje]"
migrate database

Como migrar tu base de datos a Amazon RDS

Paso 1: Cree una nueva base de datos en Amazon RDS

Comience por crear una nueva base de datos en Amazon RDS, como se describe a continuación:

  • En la página «Seleccionar motor», seleccione «MySQL» como motor de base de datos. Luego, haga clic en el botón «Seleccionar» para continuar.
  • Sobre la resultante «¿Producción?» página, elija entre escenarios de uso de producción o no producción. Tenga en cuenta que el nivel de uso gratuito de AWS solo se aplica a las instancias que no son de producción. Luego, haga clic en el botón «Siguiente paso» para continuar.
  • En la página resultante «Especificar detalles de la base de datos», ingrese los detalles de la base de datos que desea crear, especialmente la clase de instancia, el tipo de almacenamiento y el tamaño de almacenamiento asignado.
  • En la misma página, especifique un nombre exclusivo para la instancia de la base de datos, junto con un nombre de usuario y una contraseña. Luego, haga clic en el botón «Siguiente paso» para continuar.
  • En la página resultante «Configurar ajustes avanzados», deje todos los valores en su configuración predeterminada y seleccione la opción «Crear nuevo grupo de seguridad» en el campo «Grupos de seguridad de VPC». O, si tiene un grupo de seguridad existente que permite conexiones remotas al puerto MySQL (3306), seleccione ese grupo de seguridad en su lugar.
  • En la misma página, en la sección «Opciones de base de datos», especifique un nombre para la nueva base de datos. En este ejemplo, la nueva base de datos se llama wordpress. Esta base de datos se creará automáticamente una vez que se inicie la instancia de la base de datos.
  • Haga clic en el botón «Iniciar instancia de base de datos» para continuar.

Ahora se lanzará su nueva instancia de base de datos.

Haga clic en el botón «Ver sus instancias de base de datos» para ver la lista de instancias en ejecución.

Paso 2: habilite el acceso del grupo de seguridad

Una vez que su instancia de base de datos se esté ejecutando, el siguiente paso es permitir el acceso remoto al servidor de base de datos MySQL. Para hacer esto:

  • Inicie sesión en el Amazon RDS dashboard.
  • Seleccione el elemento de menú «Instancias».
  • Seleccione y expanda el registro de la instancia de base de datos MySQL recién lanzada.
  • Seleccione el grupo de seguridad actual. Esto abrirá una nueva ventana del navegador que contiene la sección «Grupos de seguridad» del panel de EC2 y con el grupo de seguridad actual preseleccionado.
  • Seleccione la pestaña «Entrante» del grupo de seguridad.
  • Haga clic en el botón «Editar».

En la ventana emergente «Editar reglas de entrada», haga clic en el botón «Agregar regla» y especifique una nueva regla de la siguiente manera:

  • Tipo: MySQL
  • Protocolo: TCP
  • Rango de puertos: 3306
  • Fuente: IP personalizada
  • Dirección IP: la dirección IP pública de su servidor de aplicaciones Bitnami en formato CIDR. Por ejemplo, si la dirección IP pública de su servidor de aplicaciones Bitnami es 101.102.103.104, especifique la dirección IP como 101.102.103.104/32.
  • Haga clic en «Guardar» para guardar sus cambios.

Paso 3: deshabilite el acceso de escritura a la aplicación

Ahora puede migrar la base de datos de su aplicación a Amazon RDS. Sin embargo, antes de hacer esto, debe deshabilitar el acceso de escritura a la aplicación para que la base de datos original y la nueva permanezcan sincronizadas.

El método para hacer esto varía de una aplicación a otra. En algunos casos, la propia aplicación ofrece un «modo de mantenimiento» que se puede activar durante la migración de datos. En otros, es posible que deba descargar un complemento de modo de mantenimiento para este propósito. Si ninguna de estas opciones está disponible, debe deshabilitar manualmente el acceso de inicio de sesión redirigiendo a los usuarios a una página de mantenimiento estática.

Step 4: Export The Application Database From Your Bitnami Stack

El siguiente paso es exportar la base de datos de la aplicación. Puede hacerlo utilizando la herramienta de línea de comandos mysqldump o la aplicación phpMyAdmin basada en navegador.

Using PhpMyAdmin

También puede lograr esto con la aplicación phpMyAdmin basada en navegador incluida de forma predeterminada con las pilas de Bitnami.

  • Inicie sesión en la aplicación phpMyAdmin.
  • Seleccione la base de datos de la aplicación en el menú de navegación izquierdo. En este ejemplo, la base de datos se llama bitnami_wordpress.
  • Seleccione el elemento de menú «Exportar».
  • En la página resultante, seleccione el método de exportación «Rápido» y el formato de salida «SQL».
  • Haga clic en «Ir».

Se creará un archivo de exportación SQL y se descargará en su escritorio. Guarde este archivo con cuidado, ya que lo necesitará en el próximo paso.

Paso 5: Importe la base de datos de la aplicación a Amazon RDS

El siguiente paso es importar la base de datos de la aplicación a su instancia de base de datos RDS. Nuevamente, puede lograr esto utilizando la herramienta de línea de comandos o la aplicación phpMyAdmin basada en navegador.

Using PhpMyAdmin

También puede lograr esto con la aplicación phpMyAdmin basada en navegador incluida con la pila de Bitnami. Sin embargo, primero es necesario configurar phpMyAdmin para conectarse a su instancia de base de datos RDS, como se describe a continuación:

  • Inicie sesión en la consola de su servidor a través de SSH.
  • Edite el archivo de configuración de phpMyAdmin en /opt/bitnami/apps/phpmyadmin/htdocs/config.inc.php y agregue las siguientes líneas al final del archivo:
$i++;
  $cfg['Servers'][$i]['verbose'] = 'Amazon RDS';
  $cfg['Servers'][$i]['host'] = 'RDS-ENDPOINT';
  $cfg['Servers'][$i]['port'] = '3306';
  $cfg['Servers'][$i]['socket'] = '';
  $cfg['Servers'][$i]['connect_type'] = 'tcp';
  $cfg['Servers'][$i]['extension'] = 'mysqli';
  $cfg['Servers'][$i]['auth_type'] = 'cookie';
  $cfg['Servers'][$i]['AllowNoPassword'] = false;
  • Recuerde reemplazar el marcador de posición RDS-ENDPOINT en el código anterior con el punto final real de su instancia de base de datos de Amazon RDS. Estas líneas permitirán acceder a su instancia de base de datos de Amazon RDS a través de phpMyAdmin.
  • Guarda el archivo.

Next:

  • Vaya a la aplicación phpMyAdmin y seleccione el servidor «Amazon RDS».
  • Inicie sesión con el nombre de usuario y la contraseña de la base de datos que definió en el Paso 1.
  • Seleccione la nueva base de datos en el menú de navegación izquierdo. En este ejemplo, la nueva base de datos se llama wordpress según la entrada que proporcionó en el Paso 1.
  • Seleccione el elemento de menú «Importar».
  • En la página resultante, seleccione el archivo de exportación de SQL creado en el Paso 4.
  • Haga clic en «Ir».

El contenido de la base de datos de la aplicación original ahora se importará a la nueva base de datos de Amazon RDS. Se mostrará un mensaje de confirmación.

Paso 6: Reconfigure la aplicación para usar la nueva base de datos

Una vez que su base de datos se haya transferido a Amazon RDS, el siguiente paso es actualizar la configuración de su aplicación y señalarla a la nueva base de datos. El procedimiento para hacer esto varía de una aplicación a otra, pero normalmente implica modificar un archivo de configuración y especificar el nuevo host de la base de datos, el nombre de usuario y la contraseña de la base de datos y el nuevo nombre de la base de datos.

Por ejemplo, para actualizar la configuración de WordPress, edite el archivo en /opt/bitnami/apps/wordpress/htdocs/wp-config.php y modifique las distintas variables de configuración como se muestra en la siguiente imagen:

Paso 7: Vuelva a habilitar el acceso de escritura a la aplicación

Ahora puede desactivar el modo de mantenimiento y volver a habilitar el acceso completo a la aplicación, invirtiendo los pasos realizados en el Paso 3.

Como eliminar las pestañas en productos en Woocommerce

Uno de los más habituales requerimientos de clientes a la hora de diseñar la página de producto de su tienda online en Woocommerce suele ser la eliminación de las pestañas de comentarios y características, principalmente por un motivo de usabilidad.

Para eliminar las pestañas podemos utilizar el siguiente código en el functions.php de tu plantilla:

/**
 * Eliminar pestañas de productos
 */
add_filter( 'woocommerce_product_tabs', 'woo_remove_product_tabs', 98 );

function woo_remove_product_tabs( $tabs ) {

    unset( $tabs['description'] );      	// Remove the description tab
    unset( $tabs['reviews'] ); 			// Remove the reviews tab
    unset( $tabs['additional_information'] );  	// Remove the additional information tab

    return $tabs;
}

El problema es que nos falta la descripción larga del producto. Para afinar aún más la plantilla se puede usar el siguiente código para mostrar la descripción. El número indica la posición entre los elementos

//** Mostrar la descripción del producto sin pestañas **//

function woocommerce_template_product_description() {
  wc_get_template( 'single-product/tabs/description.php' );
}
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_product_description', 30 );