T-Mobile Netz 0151 0160 0170 0171 0175 - 13Vodafone Netz 01520 01522 0162 0172 0172…
Hide Rows or Elements conditionally
There are differen approaches to conditionally hide elements or rows in the total theme. This is what i have so far. Read more in my support thread.
/**
* Add Custom Dynamic Variables.
*/
add_filter( 'totaltheme/replace_vars/vars', function( $vars ) {
$post_id = get_the_ID();
if ( ! $post_id ) {
return '';
}
// Custom Field laden
$enym_index = get_post_meta( $post_id, 'enym_index', true );
if ( $enym_index === '' ) {
$enym_index_out = '';
}
if ( (string) $enym_index === '1' ) {
$enym_index_out = 'wpex-hidden';
}
$vars['hide_index'] = esc_html( $enym_index_out );
return $vars;
} );
function enym_index_shortcode() {
// Aktuelle Post-ID ermitteln
$post_id = get_the_ID();
if ( ! $post_id ) {
return '';
}
// Custom Field laden
$enym_index = get_post_meta( $post_id, 'enym_index', true );
if ( $enym_index === '' ) {
return '';
}
// Wenn Wert 1 ist → "hidden" ausgeben
if ( (string) $enym_index === '1' ) {
return 'wpex-hidden';
}
// Sicher ausgeben
return esc_html( $enym_index );
}
add_shortcode( 'enym_index', 'enym_index_shortcode' );
function phalancs_check_var_classname( $atts ) {
$check = true;
$el_class = $atts['el_class'] ?? $atts['classes'] ?? $atts['class'] ?? ''; // get element class.
$var_to_check = '';
// Check if our "phalancs-check-var-{var_name}" class exists.
if ( $el_class && str_contains( $el_class, 'phalancs-check-var-' ) ) {
// Turn class into array and loop through classes and locate our variable classname.
// This is incase the field has multiple classnames.
foreach ( explode( ' ', $el_class ) as $classname ) {
// We found our classname so lets extract the variable only.
if ( str_starts_with( $classname, 'phalancs-check-var-' ) ) {
$var_to_check = str_replace( 'phalancs-check-var-', '', $classname );
break;
}
}
}
// Once we located are variable lets run it through the replacement function and set our check variable to true/false based on the result.
if ( $var_to_check && function_exists( 'totaltheme_replace_vars' ) ) {
$check = (bool) totaltheme_replace_vars( "{{{$var_to_check}}}" );
}
return $check;
}
// Hook into the theme elements filter that returns true/false if the element should display.
add_filter( 'vcex_maybe_display_shortcode', function( $shortcode_tag, $atts ) {
if ( ! phalancs_check_var_classname( $atts ) ) {
return false;
}
return true;
}, 50, 2 );
// Hook into WPBakery elements to return nothing for the shortcode output if it shouldn't display.
add_filter( 'vc_shortcode_output', function( $output, $obj, $atts, $shortcode ) {
if ( ! phalancs_check_var_classname( $atts ) ) {
return '';
}
return $output;
}, 50, 5 );
