Home Forums General Issues Parameters in url: array returns bool (false)


Parameters in url: array returns bool (false)

  • Hello,

    I have used the following tutorial the set up custom field filtering:

    – I created a custom field (type: select) with name brand
    – I’m using a normal post type

    When I goto the category url I can see the filters:

    I also included a var_dump of the field

    When I then select one of the checkboxes, the url gets update. However the checkboxes are not displayed anymore:

    At this point I’m stuck and I don’t know what’s going wrong, any help would be much appreciated.

    I have included the following code in functions.php

    	ACF Custom field filter
    // array of filters (field key => field name)
    $GLOBALS['my_query_filters'] = array( 
    	'field_583503060dc55'	=> 'brand', 
    function my_pre_get_posts( $query ) {
    // bail early if is in admin
    	if( is_admin() ) {
    	// get meta query
    	$meta_query = $query->get('meta_query');
    	// loop over filters
    	foreach( $GLOBALS['my_query_filters'] as $key => $name ) {
    		// continue if not found in url
    		if( empty($_GET[ $name ]) ) {
    		// get the value for this filter
    		// eg:,sydney
    		$value = explode(',', $_GET[ $name ]);
    		// append meta query
        	$meta_query[] = array(
                'key'		=> $name,
                'value'		=> $value,
                'compare'	=> 'IN',
    	// update meta query
    	$query->set('meta_query', $meta_query);
    // action
    add_action('pre_get_posts', 'my_pre_get_posts', 10, 1);

    I also created a function in functions.php to call and display the filter

    function filter_herenschoenen() {
        $field = get_field_object('field_583503060dc55');
        $values = explode(',', $_GET['field_583503060dc55']);
    	<?php foreach( $field['choices'] as $choice_value => $choice_label): ?>	
    	<input type="checkbox" id="<?php echo $choice_value; ?>" value="<?php echo $choice_value; ?>" <?php if( in_array($choice_value, $values)): ?> checked="checked" <?php endif; ?> /> 
    	<?php echo '<label for=' . $choice_value . '>' . $choice_label . '</label>' ; ?>
    	<?php endforeach; ?>
    <?php }

    the code I’m using in category.php

    <div id="search-herenschoenen">
    <?php filter_herenschoenen(); ?>
    <script type="text/javascript">
    (function ($) {
    $('#search-herenschoenen').on('change', 'input[type="checkbox"]', function(){
    var $ul = $(this).closest('ul'),
    vals = [];
    vals.push( $(this).val() );
    vals =  vals.join(",");
    window.location.replace('<?php echo home_url('category/herenschoenen'); ?>?brand=' + vals);
    console.log( vals );
  • Hi @michstar

    I believe there’s something wrong with your filter_herenschoenen() function. Could you please debug the $field variable like the following?


    Also, could you follow the example on that page like this instead:

    function filter_herenschoenen() {
        $field = get_field_object('field_583503060dc55', false, false);
        $field['value'] = explode(',', $_GET['brand']);
        <div class="filter" data-filter="<?php echo 'brand'; ?>">
    		<?php create_field( $field ); ?>
    <?php } ?>

    Thanks 🙂

  • Hi James,

    As you may notice, I’m new to php 🙂

    Ok when you visit:

    on this page I’m calling the function like mention above
    <?php filter_herenschoenen(); ?>

    I also include the var dumps:

                    $brand = get_field_object('field_583503060dc55');
                    echo '<pre>';
                    var_dump( $brand );
                    echo '</pre>';

    So when I var dump &brand without parameters in the url, I can see the array
    however when there are parameters in the url the array returns false. (if I’m correct)

    in the field config:
    field_key: field_583503060dc55
    field_name: brand

    type: select

    I will update the archive.php with the example code

  • Hi @michstar

    In this case, I suggest you stick with the example instead. So instead of modifying the structure, you can try to move the code to a function like this:

    function filter_herenschoenen() {
        foreach( $GLOBALS['my_query_filters'] as $key => $name ): 
            // get the field's settings without attempting to load a value
            $field = get_field_object($key, false, false);
            // set value if available
            if( isset($_GET[ $name ]) ) {
                $field['value'] = explode(',', $_GET[ $name ]);
            // create filter
            <div class="filter" data-filter="<?php echo $name; ?>">
                <?php create_field( $field ); ?>
        <?php endforeach;

    Also, could you please share the JSON or XML export file of your field group, your functions.php file and your archive.php/category.php file? If the code is too long, you can use

    Thanks 🙂

  • Hi @acf-support,

    Thanks again for your reply. I have the select box now,

    but for some reason the url isn’t updated, I do make use of materializecss:

    I have uploaded the files to:

  • Hi @michstar

    It seems you have a very different script to redirect the URL. Could you please stick with the example and start from there?

    Also, could you please share the JSON or XML export file so I can test it out on my installation?

    Thanks 🙂

Viewing 6 posts - 1 through 6 (of 6 total)

The topic ‘Parameters in url: array returns bool (false)’ is closed to new replies.