Julius'Lab

Wordpress

(WordPress) Añadir un Menú (con enlaces o inactivo-notas) al admin toolbar

Debe usarse el Code Snippets y agregar el código siguiente en PHP:

if (!function_exists('jnotes_admin_bar_link')):
    function jnotes_admin_bar_link($admin_bar)
    {
        $admin_bar->add_menu([
            'id' => 'jnotes_parent',
            'title' => '<span class="ab-icon"></span><span class="ab-label">JNotes</span>',
            'href' => '',
            'meta' => [
                'title' => '',
            ],
        ]);
        $admin_bar->add_menu([
            'id' => 'jnotes_color1',
            'parent' => 'jnotes_parent',
            'title' => esc_html('oro #dab42d'),
            'href' => '',
        ]);
        $admin_bar->add_menu([
            'id' => 'jnotes_color2',
            'parent' => 'jnotes_parent',
            'title' => esc_html('gris #636363'),
            'href' => '',
        ]);
        $admin_bar->add_menu([
            'id' => 'jnotes_color3',
            'parent' => 'jnotes_parent',
            'title' => esc_html('verde #54b236'),
            'href' => '',
        ]);
        $admin_bar->add_menu([
            'id' => 'jnotes_color4',
            'parent' => 'jnotes_parent',
            'title' => esc_html('lightblack #353a40'),
            'href' => '',
        ]);
    }
    add_action('admin_bar_menu', 'jnotes_admin_bar_link', 999);
endif;

Este código agrega un elemento (sin enlace) al admin toolbar llamado JNotes, que funciona como parent. Los subelementos son los que le siguen (en este caso colores), y cada elemento que se requiera debajo del inicial debe ponérsele la propiedad ‘parent’ => ‘jnotes_parent’ para que aparezca debajo del principal. Pueden agregarse varios elementos.

(WordPress) Añadir un Menú (con enlaces o inactivo-notas) al admin toolbar Leer más »

(Formidable) usr_meta: códigos de comparación y resultados (code snippets)

SHORTCODE (CON PARÁMETRO) DEVUELVE TRUE (1) SI ES IGUAL A usr_tipo (user meta) DEL USUARIO ACTUAL
Uso: [checkmeta vum=»valor a comparar»] . Colocar el shortcode en posts o pages.

add_shortcode('checkmeta','check_user_meta');
function check_user_meta ( $atts ) {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true ); //cambiar usr_tipo al user meta que se quiera usar
    $valueusermeta = $atts['vum'];
    if($currentusermeta == $valueusermeta)
	return true;
    else
	return false;
    }

SHORTCODE (SIN PARÁMETRO). DEVUELVE TRUE (1) SI ES IGUAL A usr_tipo (user meta) DEL USUARIO ACTUAL
Uso: [checkmeta] . Colocar el shortcode en posts o pages. Cambiar $valueusermeta = «valor a comparar».

add_shortcode('checkmeta','check_user_meta');
function check_user_meta () {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true );
    $valueusermeta = "Médico";
    if($currentusermeta == $valueusermeta)
	return true;
    else
	return false;
    }

SHORTCODE (SIN PARÁMETRO). DEVUELVE EL VALOR DE usr_tipo (user meta) DEL USUARIO ACTUAL
Uso: [displayusermeta] . Colocar el shortcode en posts o pages. Cambiar $valueusermeta = «valor a comparar».

add_shortcode('displayusermeta','check_user_meta');
function check_user_meta () {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true );
   return $currentusermeta;
}

DIVI – PLUGIN: CONTENT VISIBILITY FOR DIVI (FUNCIÓN CON PARÁMETRO)
Divi no tiene un plugin como Stax Visibility Logic para Elementor, donde permite elegir la visibilidad de un bloque seleccionando «by user meta». El plugin de Divi «Content Visibility for Divi» sólo agrega una caja en las opciones donde debe ponerse una expresión PHP booleana (que devuelva True), para ocultar el bloque. Para esto, la función siguiente sirve.

Uso: check_user_meta («parámetro») (sin corchetes)| Ejemplo: check_user_meta («Médico»)

Colocarlo en la caja Content visibility de Divi>Cualquier elemento>Panel opciones>Avanzado>Visibilidad

function check_user_meta ( $valueusermeta ) {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true );
   if($currentusermeta == $valueusermeta)
	return true;
    else
	return false;
    }

(Formidable) usr_meta: códigos de comparación y resultados (code snippets) Leer más »

(Formidable) Problema con shortcodes en modal RESUELTO – Sintaxis de shortcode

Los shortcodes funcionan en ventanas modales. Lo que pasa es que los shortcodes con parámetros deben venir sin «comillas», de esta forma:

[ formidable id=x readonly=administrator ]

No de esta forma, como lo indican aquí:

[ formidable id=x readonly=’administrator’ ] o [ formidable id=x readonly=»administrator» ]

Esta aclaración viene porque implementé una ventana modal en GuíaSaludMx y dentro un formulario con un parámetro del custom code mencionado arriba. No funcionó, porque al parámetro le puse las comillas, y me hizo pensar que el problema era la ventana modal.

(Formidable) Problema con shortcodes en modal RESUELTO – Sintaxis de shortcode Leer más »

(Formidable) Agregar contenido en un View cada cierto número de entradas

Esto puede ponerse debajo del código, al final del contenido del view. Sustituir el 3 por la cantidad de entradas entre cada contenido.

[ frm-condition source=frm-math decimal=1 content="[entry_position] % 3" equals="0" ]
    Contenido aquí
[ /frm-condition ]

Usos sugeridos:

  • En una vista de impresión, mostrar dos elementos en cada página (incluyendo un page-break al final y colocándolo dentro de la frm-condition).
  • Insertar un anuncio cada n número de entradas.

(Formidable) Agregar contenido en un View cada cierto número de entradas Leer más »

Crear un botón TOGGLE para mostrar/ocultar de cualquier elemento en Elementor

Crear un botón y asignarle el tag id= showFilterForm (en Avanzado de Elementor).

Crear el elemento (a ocultar/mostrar), normalmente debajo del botón, y asignarle el tag id= hiddenFilterForm (en Avanzado de Elementor).

Poner en la sección CSS correspondiente de Personalizar HTML del tema, la línea: #hiddenFilterForm {display:none;}

Agregar el siguiente Javascript:

<script type="text/javascript">
jQuery(document).ready(function( $ ){

   $('#showFilterForm').click(function() {
   $('#hiddenFilterForm').toggle("slow");
 });
});
</script>

Crear un botón TOGGLE para mostrar/ocultar de cualquier elemento en Elementor Leer más »

(Formidable) Cómo mostrar u ocultar contenido a partir de user_meta keys

1) Agregar este code snippet: https://formidableforms.com/knowledgebase/php-examples/#kb-check-parameter-value

add_shortcode('if_get_param', 'check_get_param_value');
function check_get_param_value( $atts, $content="" ) {
    if ( ! isset( $atts['name'] ) || ! isset( $atts['value'] ) || ! isset( $atts['type'] ) ) {
        return $content;
    }
    
    $type = $atts['type'];
    if ( $type == 'greater_than' ) {
        $type = '>';
    } else if ( $type == 'less_than' ) {
        $type = '<';
    } else if ( $type == 'equals' ) {
        $type = '==';
    } else if ( $type == 'not_equal' ) {
        $type = '!=';
    }

    $get_value = isset( $_GET[ $atts['name'] ] ) ? $_GET[ $atts['name'] ] : '';

    if ( ! FrmFieldsHelper::value_meets_condition( $get_value, $type, $atts['value'] ) ) {
        $content = '';
    }

    return do_shortcode( $content );
}

2) Agregar este code snippet:

add_shortcode('user_meta', 'user_meta_shortcode_handler');
function user_meta_shortcode_handler($atts,$content=null){
 
	if ( !isset( $atts['user_id'] ) ){
		$user = wp_get_current_user();
		$atts['user_id'] = $user->ID;
	}
	if ( !isset( $atts['size'] ) ){
		$atts['size'] = '50';
	}
	if ( !isset( $atts['post'] ) ) {
		$atts['post'] = '';
	}
	if ( !isset( $atts['wpautop'] ) ) {
		$atts['wpautop'] = '';
	}

	$user = new WP_User($atts['user_id']);
 
	if ( !$user->exists() ) return;
 
	if( $atts['key'] == 'avatar'){
		return $atts['pre'] . get_avatar( $user->ID, $atts['size']) . $atts['post'] ;
	}
	if ( $user->has_prop( $atts['key'] ) ){
		if ($atts['wpautop'] == 'on'){
			$value = wpautop( $user->get( $atts['key'] ) );
		} else {
			$value = $user->get( $atts['key'] );
		}
	}
 
	if (!empty( $value )){
		return $atts['pre'] . $value . $atts['post'] ;
	}
 
	return;
}

Esto creará un nuevo shortcode: [user_meta key=»loquesea»]
Reemplaar «loquesea» con el nombre del user meta y encontrará el valor almacenado ahí.

También tiene unos cuantos parámetros que acepta si se quieren usar:

user_id – id del usuario del cual se quiere obtener el meta. Debe dejarse vacía si se quiere que sea igual al usuario actual.
key – meta key del campo que se quiere obtener.
wpautop = «on» – este se usa para áreas de texto o campos wysiwyg.
size = «100» – este se usa para especificar el tamaño del campo de avatar.

Probablemente la mayoría no se necesiten estas extra opciones pero pueden usarse.

3) Usaremos el shortcode frm-set-get (nativo de FormidableForms) para obtener el valor de la meta data (usando nuestro nuevo shortcode user_meta (implementado en el paso 2)) y guardarlo temporalmente, para decirle al shortcode if_get_param (implementado en el paso 1) que use el valor guardado, de la forma siguiente:

[ frm-set-get param=my_user_meta ][user_meta key="loquesea"][ /frm-set-get ]
[if_get_param name="my_user_meta" type="equals" value="VALOR A COMPROBAR"]Contenido si es VERDADERO[/if_get_param]

[if_get_param name="my_user_meta" type="not_equal" value="VALOR A COMPROBAR"]Contenido si es FALSO[/if_get_param]

Solución orientada por Chris de FDM Digitaly adaptada por Julius, desde Slack.

(Formidable) Cómo mostrar u ocultar contenido a partir de user_meta keys Leer más »

Cambiar el nombre de carpeta de instalación de WordPress en servidor

Cada instalación de WordPress se compone de un conjunto completo entre archivos y carpetas en un orden jerárquico específico que garantiza el funcionamiento correcto del sitio web.

Aunque la mayoría de los usuarios instalan WordPress es la carpeta raíz del sitio web que es generalmente public_html o htdocs, para acceder a él desde la URL absoluta de la página, sin embargo esto ni singifica que no puedes instalar varios WordPress en tu servidor o instalar WordPress en un carpeta separada.

El proceso de instalación de WordPress tanto en una ruta absoluta en el servidor como en una carpeta secundaria como en un enlace de http://example.com/tienda para vender los productos de tu empresa.

Pero ¿Qué pasa si quieres cambiar nombre de carpeta de WordPress? En este caso es necesario entonces hacer cambios en la ruta de instalación de tu servidor, lo cual explicamos en a continuación.

Cambiar Nombre de Carpeta de WordPress

Esta operación es un proceso de usuarios avanzados que entienden la organización de WordPress y cómo funciona una instalación, por eso te recomendamos primero crear un backup completo de los archivos y la base de datos de WordPress.

Si te sientes lo sufientemente seguro de manipular tu instalación y cambiar nombre de carpeta principal, entonces te recomendamos seguir los pasos detallados abajo al pie de la letra para no arruinar tu sitio web.

Cambiar Dirección URL de WordPress

El primero paso a dar para cambiar el nombre de la carpeta de instalación de WordPress es dirigirse al panel de control de tu sitio web actual, donde cambias los enlaces URLs actuales.

Supongamos a tu sitio web está en un carpeta llamada “wp” a la cual quieres cambiar al nombre de “blog”. En la sección de Ajustes → Generales del panel, estableces el valor de “blog” en la parte final de la URL de WordPress. Justo después de guardar los cambios con el botón Guardar cambios, aparecerá un error en la página.

No te preocupes, esto significa que acabas de cambiar nombre de carpeta de WordPress, y te está redirigiendo a la página de acceso para acceder de nuevo al sitio web.

Cambiar Nombre de Carpeta de WordPress

El segundo y último paso a hacer es acceder a los archivos de tu instalación mediante el protocolo FTP para ubicar la carpeta de tu sitio web de WordPress a la que quieres cambiar el nombre en el servidor.

Cambiar el nombre de carpeta de instalación de WordPress en servidor Leer más »

Filtrar una Vista por el valor de uno o dos campos con un operador OR

Es posible filtrar una Vista si UNO o DOS campos de las entradas contienen un valor, esto es:
Si Campo A tiene un valor X, o el Campo B tiene un valor Y.

En la Vista, en Ajustes Avanzados, hay que poner un filtro con el nombre del primer campo:

CampoA es Igual a custom
(hay que ponerla así, sólo la palabra custom)

Alterado por mí, del siguiente enlace: https://formidableforms.com/knowledgebase/frm_where_filter/#kb-add-two-filters-combined-with-or

Código:

add_filter('frm_where_filter', 'filtro_campoa_or_campob', 10, 2);
function filtro_campoa_or_campob($where, $args){
	$view_id = 257; // ID de la Vista a filtrar
	$field_1 = 269;// ID del campo A ESTE ES EL PRIMER CAMPO A CHECAR
	$field_2 = 268;// ID del campor B ESTE ES EL SEGUNDO CAMPO A CHECAR
    $user = wp_get_current_user(); // Asigna a la variable $user el Usuario Actual
	$search_term_1 = $user->usr_assign_num_name; // Primer término a comparar: sustituir por algún valor o valor de un campo (o meta-key del usuario, en este caso)
	$search_term_2 = $user->usr_assign_clave; // Segundo término a comparar: 1011000001 (clave usuario)
	if ( $args['display']->ID == $view_id && $args['where_opt'] == $field_1 ) {
		$search_val_1 = $search_term_1; //tal vez estas dos líneas (esta y la siguiente) son superfluas, se podría llegar directamente a $search_val_1
		$search_val_2 = $search_term_2; // y $search_val_2 sin necesidad de pasar por $search_term_1 y $search_term_2

		if ( $search_val_1 && $search_val_2 ) {
			$where = "( (meta_value = '". $search_val_1 ."' and fi.id = " . $field_1 . ")";
			$where .= " OR (meta_value = '" . $search_val_2 . "' and fi.id = " . $field_2 . ") )";
                } else if ( $search_val_1 ) {
			$where = "(meta_value = '". $search_val_1 ."' and fi.id = " . $field_1 . ")";
                } else if ( $search_val_2 ) {
			$where = "(meta_value = '". $search_val_2 ."' and fi.id = " . $field_2 . ")";
		} else {
			$where = "fi.form_id = " . $args['display']->frm_form_id;
		}
	}
	return $where;
}

Filtrar una Vista por el valor de uno o dos campos con un operador OR Leer más »

(Unfinished) Cómo crear un «Constructor de Código» (Code Builder)

Con Formidable Forms podemos crear un «Constructor de Código» en caso de tener la necesidad de escribir un código complejo y recurrente sin tener que copiarlo y editarlo de la última instancia.

En este caso de ejemplo, se construirá un código para un shortcode frm-set-get que incluirá varios parámetros en secuencia.

Paso #1
Crear el formulario

With Formidable Forms we can create a «Code Builder» in case we need to write a complex and recurring code without having to copy and editing from the last instance.

In this example, we’ll build a code for a frm-set-get shortcode that will include several parameters in a sequence. This shortcode is suitable to feed a «Dynamic poll system» (ANOTHER ARTICLE). The resulting code will be something like:

Step #1
Create a form by the usual procedure and name it Codebuilder form (or as you like). In Settings>Form permissions activate the options «Limit form visibility to ADMINISTRATOR» (or any role you like to use the code builder) and «Allow front-end editing» with the correspondent permissions.

Step #2
In our new form, we start by inserting a Text field, and in its Key Field we’ll name it codebuilder-code. This will be the field which will hold the main resulting code. The field label can be something like «Code».

Step #3
Add a Hidden Field. In Default Value of the codebuilder-code field, insert this code:

(Unfinished) Cómo crear un «Constructor de Código» (Code Builder) Leer más »