<?php /** * Function to display the front end checkboxes for the ajut filter * * references: * basic start * https://www.advancedcustomfields.com/resources/creating-wp-archive-custom-field-filter/ * * wordpress full form example * https://wordpress.stackexchange.com/questions/383599/form-checkbox-value-going-to-dynamic-url * * checkbox adaptation query * https://wordpress.stackexchange.com/a/102915 * * form GET and POST * https://www.formget.com/php-checkbox/ * * @package Oficina_de_Suport_theme */ ?> <?php if( ! function_exists( 'ofisuport_ajuts_filters_form' ) ): function ofisuport_ajuts_filters_form() { ?> <div id="archive-filters" class="ofisuport-filters"> <?php // output all possible values of a checkbox $groupkey = "group_63ab636898703"; // write here the key for the group of fields from acf if( $groupkey ) { ?> <?php // start the form ?> <form id="form-ajuts" name="search-ajuts"> <?php $groupkey_fields = acf_get_fields($groupkey); foreach( $groupkey_fields as $field_key ) { if( $field_key['type'] == 'checkbox' ){ // https://wordpress.stackexchange.com/a/102915 $fields = get_field_object($field_key['key']); if( $fields ) { // check for values from meta fields db in url foreach( $GLOBALS['my_query_filters'] as $key => $fieldname ) { // check for values in url and get value if available if( isset($_GET[ $fieldname ]) ) { $filteredvalues['value'] = explode(',', $_GET[ $fieldname ]); }; //end check for values in url // construct the checkboxes if( $fieldname == $fields['name']) { ?> <section id="fund-filter-<?php echo $fields['name']; ?>" class="<?php echo $fields['name']; ?>"> <h5><?php echo $fields['label'];?></h5> <?php foreach( $fields['choices'] as $choicevalue => $choicelabel ) { ?> <div class="filter" data-filter="<?php echo $fields['name'];?>"> <input class="ofisuport-filter" type="checkbox" name="<?php echo $fields['name'];?>" <?php if( in_array($choicevalue,$filteredvalues['value']) ) { echo 'checked';}; ?> value="<?php echo $choicevalue ?>" /> <label for="<?php echo $choicevalue; ?>"><?php echo $choicelabel;?></label> </div> <?php };//end foreach fields['choices'] ?> </section> <?php }; //end if fieldname == fields['name'] ?> <?php // end of construct checkboxes ?> <?php }; // end check for values from meta fields db in url ?> <?php }; //end if field_key['key'] ?> <?php }; //end if type checkbox ?> <?php }; //end foreach groupkey field ?> <p><b>Results:</b> <span id="results"></span></p> <button type="button" name="submit-ajut" class="button-more">enviar</button> </form> <?php //close the form and subit ?> <?php }; //end if groupkey ?> </div> <script type="text/javascript"> (function($) { // change //$('#archive-filters').on('change', 'input[type="checkbox"]', function(){ $('#archive-filters').on('click', 'button', function(){ // vars var url = '<?php echo home_url('ajuts/'); ?>'; args = {}; var appendtoURL = ''; var eachfiltered = ''; var valueschecked = ''; // loop over filters $('#archive-filters .filter').each(function(){ // check if is first appearance of each if( eachfiltered != $(this).data('filter') ){ // save already calculated field=val01,val02,val03 appendtoURL += eachfiltered +'=' +valueschecked +'&'; // remove last ',' appendtoURL = appendtoURL.slice(0, -1); // start new fieldname filtered eachfiltered = $(this).data('filter'); // reset values valueschecked = ''; // find checked inputs $(this).find('input:checked').each(function(){ // if not empty save value and , if( $(this).val() != '' ){ valueschecked = $(this).val() + ','; } }); } else { // we have previous values checked // find checked inputs if( $(this).val() != '' ){ // if not empty append value and , $(this).find('input:checked').each(function(){ valueschecked += $(this).val() + ','; }); } }; }); // save last cycled filtered value already calculated field=val01,val02,val03 appendtoURL += eachfiltered +'=' +valueschecked +'&'; // remove last & appendtoURL = url.slice(0, -1); // update url url += '?'; // reload page //$('#archive-filters button').on('click', function () { alert( "estoy en: " +url +appendtoURL); //window.location.replace( url ); //}); }); })(jQuery); </script> <?php }; //end ofisuport_display_filters() endif; // end if ! functionexists ?>