Autor¬¬

ACF option en Oxygen builder

Fuente: https://drive.google.com/file/d/1ZOwxd1mKWoon2qo0R4TFWXFZSKZR2m3Y/view

https://github.com/soflyy/oxygen-bugs-and-features/issues/142#issuecomment-774532411

Local JSON ACF en Oxygen builder

https://github.com/wplit/ACF-Local-JSON/blob/master/plugin.php
https://www.advancedcustomfields.com/resources/local-json/

Trozos de código útiles para ACF

Número total de repeater:
Ej: si tengo 4 repeaters, obtengo el número 4

echo count( get_field('repeater_field') );

Numeración por cada repeater:
Ej: si tengo 4 repeaters, obtengo: 1 2 3 4

<?php
$i = 1;
while(has_sub_field('repeater_field')):
?>

<?php echo $i; ?>

<?php
$i++;
endwhile;
?>

Fuente: https://support.advancedcustomfields.com/forums/topic/how-to-display-the-number-of-the-row-of-the-repeater-field/

Override templates de plugins (Woocommerce) con Oxygen Builder

Debido a Oxygen deshabilita los theme de WordPress, no es posible personalizar los templates de plugin como Woocommerce.

La solución es la siguiente paso por agregar un plugin personalizado con filter hooks.

  1. Primero se debe crear un plugin, acá un ejemplo: https://github.com/srikat/my-custom-functionality
    Nombre ejemplo del plugin: my-custom-functionality
  2. Copiar archivos de los templates del plugin a override, ejemplo de Woocommerce: MIDOMINIO.COM/wp-content/plugins/woocommerce/templates
  3. Pegar en: MIDOMINIO.COM/wp-content/plugins/my-custom-functionality/woocommerce/
  4. Agregar el siguiente código en el archivo MIDOMINIO.COM/wp-content/plugins/my-custom-functionality/plugin.php
add_filter( 'woocommerce_locate_template', 'intercept_wc_template', 10, 3 );
/**
 * Filter the cart template path to use cart.php in this plugin instead of the one in WooCommerce.
 *
 * @param string $template      Default template file path.
 * @param string $template_name Template file slug.
 * @param string $template_path Template file name.
 *
 * @return string The new Template file path.
 */
function intercept_wc_template( $template, $template_name, $template_path ) {

	$template_directory = trailingslashit( plugin_dir_path( __FILE__ ) ) . 'woocommerce/';
	$path = $template_directory . $template_name;

	return file_exists( $path ) ? $path : $template;

}

Opción overriding un archivo específico (ejemplo: cart.php) Woocommerce:

add_filter( 'woocommerce_locate_template', 'intercept_wc_template', 10, 3 );
/**
 * Filter the cart template path to use cart.php in this plugin instead of the one in WooCommerce.
 *
 * @param string $template      Default template file path.
 * @param string $template_name Template file slug.
 * @param string $template_path Template file name.
 *
 * @return string The new Template file path.
 */
function intercept_wc_template( $template, $template_name, $template_path ) {

	if ( 'cart.php' === basename( $template ) ) {
		$template = trailingslashit( plugin_dir_path( __FILE__ ) ) . 'woocommerce/cart/cart.php';
	}

	return $template;

}

Opción overriding varios archivos específico (ejemplo: cart.php y form-billing.php) Woocommerce:

add_filter( 'woocommerce_locate_template', 'intercept_wc_template', 10, 3 );
/**
 * Filter the cart template path to use cart.php in this plugin instead of the one in WooCommerce.
 *
 * @param string $template      Default template file path.
 * @param string $template_name Template file slug.
 * @param string $template_path Template file name.
 *
 * @return string The new Template file path.
 */
function intercept_wc_template( $template, $template_name, $template_path ) {

	if ( 'cart.php' === basename( $template ) ) {
		$template = trailingslashit( plugin_dir_path( __FILE__ ) ) . 'woocommerce/cart/cart.php';
	} elseif ( 'form-billing.php' === basename( $template ) ) {
		$template = trailingslashit( plugin_dir_path( __FILE__ ) ) . 'woocommerce/checkout/form-billing.php';
	}

	return $template;

}


Overriding otros plugin, ejemplo Nbdesigner

// Override templates NBdesigner web-to-print-online-designer
// ------------------------------------------------------------------------------------------------------ //

add_filter( 'nbdesigner_locate_template', 'intercept_nbdesigner_template', 10, 3 );
/**
 * Filter the cart template path to use cart.php in this plugin instead of the one in WooCommerce.
 *
 * @param string $template      Default template file path.
 * @param string $template_name Template file slug.
 * @param string $template_path Template file name.
 *
 * @return string The new Template file path.
 */
function intercept_nbdesigner_template( $template, $template_name, $template_path ) {

	$template_directory = trailingslashit( plugin_dir_path( __FILE__ ) ) . 'web-to-print-online-designer/';
	$path = $template_directory . $template_name;

	return file_exists( $path ) ? $path : $template;

}

Fuente:

https://wpdevdesign.com/how-to-override-woocommerce-templates-using-a-custom-functionality-plugin/

https://wpdevdesign.com/overriding-plugin-templates-in-oxygen/

Activar plugins WordPress a través de phpMyAdmin

En tabla «options» y fila «active_plugins»

a:10:{
i:0;s:33:"classic-editor/classic-editor.php";
i:1;s:34:"advanced-custom-fields-pro/acf.php"
}

Agregar el plugin que se quiere activar, donde «i» es el correlativo y «s» el número de caracteres. Ej: «nombre-del-plugin/archivo-plugin.php» sería 36

a:11:{
i:0;s:33:"classic-editor/classic-editor.php";
i:1;s:34:"advanced-custom-fields-pro/acf.php"
i:2;s:36:"nombre-del-plugin/archivo-plugin.php";
}

Fuente: https://wordpress.stackexchange.com/questions/199798/activate-a-plugin-through-phpmyadmin-or-ftp

Resetear el módulo bluetooth en MacOS

Para restablecer el módulo Bluetooth de MacOS, se deben seguir los siguientes pasos:

  • Paso 1: Mantener presionada la tecla Shift (⇧) y la tecla Option, al mismo tiempo hacer clic en el menú Bluetooth en la barra de menú del Mac (ver imagen).
  • Paso 2: Ir a «Depurar» > «Eliminar todos los dispositivos» y hacer clic en él para desconectar todos los dispositivos bluetooth.
  • Paso 3: Abrir el mismo menú y hacer clic en «Depurar» > «Restablecer el módulo Bluetooth».
  • Ahora volver a conectar los dispositivos bluetooth

 

Fuente: https://www.idownloadblog.com/2016/02/01/experiencing-bluetooth-problems-on-your-mac-try-this/

Mejorar seguridad de servidor Linux

1.- Instalar y ejecutar solo lo necesario

Muchas distribuciones o paquetes pueden iniciar ciertos servicios, ejecutándose en diferentes puertos. Eso podría suponer un riesgo de seguridad. Entonces, abrir la terminal y ejecutar:

netstat -npl

La salida mostrará que servicios se están ejecutando y en que puertos. Si detecta algún servicio que no debería estar funcionando, detenerlo. También se debe vigilar los servicios que están habilitados y se ejecutan al inicio del sistema. Se puede  comprobar con el siguiente comando en sistemas que ejecutan systemd:

systemctl list-unit-files --type=service | grep enabled

Dependiendo del sistema,  se obtendrá una salida como la que se muestra en la Figura 1 anterior. Si aparece algún servicio no deseado, deshabilitarlo usando el comando systemctl:

systemctl disable service_name

2.- Restringir acceso al servidor

No es buena práctica utilizar el acceso root. Para lo cual se debe crear un nuevo usuario.

Agregar usuario para Red Hat / Centos

A.- Agregar usuario

useradd nombreusuario

B.- Crear contraseña para el usuario:

passwd nombreusuario

Ingresar la contraseña respectiva.

C.- Ahora se deben dar poderes «sudo».  Para lo cual ejecutar el siguiente comando:

EDITOR=nano visudo

D.- Buscar la siguiente línea:

# %wheel ALL=(ALL) ALL

E.- Descomentar la línea (el símbolo # significa que está comentado; simplemente eliminar el símbolo para descomentar) para que se vea así:

%wheel ALL=(ALL) ALL

F.- Guardar y cerrar el archivo. Si el usuario no pertenece al grupo de wheel, se puede agregar ejecutando este comando:

# usermod -aG wheel nombreusuario
Agregar usuario para Ubuntu / Debian

A.- Agregar usuario:

adduser nombreusuario

Responder algunas preguntas que hará el sistema, incluida la creación de la contraseña para este usuario.

B.- Una vez creado, proporcionar al usuario los poderes de sudo:

gpasswd -a nombreusuario sudo

Abrir otra ventana del terminal e iniciar sesión en el servidor con el usuario recién creado y probar algunos comandos con sudo.

3.- Deshabilitar root

Para hacerlo, abrir el archivo de configuración sshd:

sudo vi /etc/ssh/sshd_config

A continuación, buscar la línea comentada:

#PermitRootLogin yes

Para editar el archivo, presionar la letra «A» del teclado y cambiar a:

#PermitRootLogin no

Luego presionar ESC para salir de la edición y finalmente guardar presionando ingresar los siguientes caracteres y presionar ENTER

:wq

Reiniciar servicio:

Para Red Hat / Centos:

sudo /etc/init.d/sshd restart

Para Ubuntu / Debian:

sudo /etc/init.d/ssh restart

Importante: No desconectarse del servidor todavía ya que se debe comprobar que el nuevo usuario tiene acceso vía SSH, de lo contrario no se podrá ingresar al servidor.
Si todo funciona bien, cerrar la sesión del servidor de forma segura como root.

4.- Cambiar puerto

De esta forma se dificulta el acceso vía SSH ya que el puerto por defecto (22) estará cerrado.

Abrir archivo sshd_config (esta vez como sudo, porque ya no se puede iniciar sesión en el servidor como root):

sudo vi /etc/ssh/sshd_config

Buscarla siguiente línea comentada:

#Port 22

Para editar el archivo, presionar la letra «A» del teclado y cambiar al puerto elegido. Importante es verificar que este puerto no sea utilizado por otro servicio.

Para esta prueba se usará el puerto 1966:

Port 1966

Luego presionar ESC para salir de la edición y finalmente guardar presionando ingresar los siguientes caracteres y presionar ENTER

:wq

Una vez más, antes de cerrar sesión en el servidor, verificar la configuración abriendo otra ventana de terminal e iniciar inicie sesión usando este patrón:

ssh -p{port_number} [email protected]_IP

Ejemplo:

ssh -p1966 [email protected]_IP

 

Fuente: https://www.linux.com/learn/how-make-your-linux-server-more-secure

Actualización de paquetes Linux (Ubuntu/Debian)

Actualización de paquetes de seguridad (Ubuntu/Debian)

Conectar vía SSH y correr los siguientes comandos:

grep security /etc/apt/sources.list | tee /etc/apt/security.sources.list
apt-get update
apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Presionar «Y» (sin comillas) y luego «ENTER»Press “Y” and “Enter”.

Para verificar y aplicar actualizaciones, haga esto:

apt-get update
apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list

Actualización de todos los paquetes (Ubuntu/Debian)

Conectar vía SSH y correr los siguientes comandos:

apt-get update && apt-get upgrade

Presionar «Y» (sin comillas) y luego «ENTER»

 

Fuente: https://www.3cx.com/blog/voip-howto/os-security-updates-debian/

Editar php.ini en Mamp (no pro)

Los archivos php.ini se encuentran en:

/Applications/MAMP/bin/php/phpX.X.XX/conf/php.ini

Las X.X.XX corresponden a la versión de PHP que se quiera editar (ej: php7.3.1)

Problemas con NPM

Unhandled rejection Error: EACCES: permission denied, open '/Users/username/.npm/_cacache/tmp/a449402d'

Solución:

  1. sudo chown -R $USER:$GROUP ~/.npm
  2. sudo chown -R $USER:$GROUP ~/.config

Fuente: https://stackoverflow.com/questions/50639690/on-npm-install-unhandled-rejection-error-eacces-permission-denied

 

npm ERR! code ELIFECYCLE

Solución:

  1. npm cache clean –force
  2. Borrar node_modules manualmente o utilizar: rm -rf node_modules (borrar package-lock.json)
  3. npm install

Fuente: https://stackoverflow.com/questions/42308879/npm-err-code-elifecycle

© 2021 Grafreek

Tema por Anders NorénSubir ↑