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();
}