lp__data_list_html( $data, $args = [] )
This function allows you to create an HTML list from a key-value pair array.
Plugin
Namespace
Launchpad
Parameters
array
$data
Key value pair of attributes to list
string
$args
Parent container classes
Return
string
List of data items
Source
File: \includes\lp-utility-functions.php
function lp__data_list_html( $data, $args = [] ){
$data = array_filter( $data, function( $value ){
return is_array( $value ) ? ( ! empty( lp__array_key_value( 'value', $value ) ) || ! empty( lp__array_key_value( 'link', $value ) ) ) : ! empty( $value );
} );
$el_classes = lp__array_key_value( 'el_classes', $args );
$child_el_classes = lp__array_key_value( 'child_el_classes', $args );
$el = lp__array_key_value( 'el', $args, "ul" );
$child_el = lp__array_key_value( 'child_el', $args, "li" );
$el_class_prefix = lp__array_key_value( 'el_class_prefix', $args, "" );
$separator = lp__array_key_value( 'separator', $args, "" );
ob_start();
if( ! empty( $data ) && is_array( $data ) ):
$el_class_attr = $el_classes ? " class='{$el_classes}'" : "";
$total = count( $data );
$count = 1; ?>
<<?=$el?><?=$el_class_attr?>><?php
foreach( $data as $key => $d ) :
if( $d ) :
if( is_array( $d ) ) :
$d = wp_parse_args( $d,
array(
'value' => '',
'link' => '',
'label' => '',
'text' => '',
'target' => '_blank',
)
);
$value = lp__array_key_value( 'value', $d );
$label = lp__array_key_value( 'label', $d );
$link = lp__array_key_value( 'link', $d );
$text = lp__array_key_value( 'text', $d, $link );
$target = lp__array_key_value( 'target', $d );
if( $link ) :
ob_start(); ?><a href="<?= $link ?>"<?php echo $target ? ' target="'.$target.'"' : ''; ?>><?= $text ?></a><?php
$value = ob_get_clean();
endif; ?>
<<?=$child_el?> class="<?php echo $child_el_classes ? "{$child_el_classes} " : ""; ?><?=$el_class_prefix.$key?>"><?php
if( $label ) : ?><span class="<?=$el_class_prefix?>label"><?=$label?></span> <span class="<?=$el_class_prefix?>value"><?=$value?></span><?php
else : echo $value; endif;
?></<?=$child_el?>><?php
else :
?><<?=$child_el?> class="<?php echo $child_el_classes ? "{$child_el_classes} " : ""; ?><?=$el_class_prefix.$key?>"><?php _e( $d ); ?></<?=$child_el?>><?php
endif;
if( $child_el != "li" && $count < $total && $separator ):
echo $separator;
endif;
endif;
$count++;
endforeach; ?>
</<?=$el?>><?php
endif;
return ob_get_clean();
}