(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 »