Как не работает архив WP с фильтром пользовательских полей (ACF) - PullRequest
0 голосов
/ 10 января 2020

Я использую Расширенные настраиваемые поля и следую инструкциям этого руководства по созданию архива WP с фильтром настраиваемого поля. У меня есть

  • Имя поля: check Field
  • Field тип: check
  • Выбор: 1: a, 1: b, 1: c

Функция:

// 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 ]) ) {

            continue;

        }


        // get the value for this filter
        // eg: http://www.website.com/events?city=melbourne,sydney
        $value = explode(',', $_GET[ $name ]);


        // append meta query
        $meta_query = array(
  array(
    'key'       => $name,
    'value'     => $value,
    'compare'   => 'IN',
  )
);

    } 


    // update meta query
    $query->set('meta_query', $meta_query);

}

Archive-event. php:

<div id="archive-filters">
<?php foreach( $GLOBALS['my_query_filters'] as $key => $name ): 

    // get the field's settings without attempting to load a value
    $field = get_field_object('check');


    // set value if available
    if( isset($_GET[ $name ]) ) {

        $field['check'] = explode(',', $_GET[ $name ]);

    }


    // create filter
    ?>
    <div class="filter" data-filter="<?php echo $name; ?>">
        <?php create_field( $field ); ?>
    </div>

<?php endforeach; ?>
</div>

<script type="text/javascript">
(function($) {

    // change
    $('#archive-filters').on('change', 'input[type="checkbox"]', function(){

        // vars
        var url = '<?php echo home_url('event'); ?>';
            args = {};


        // loop over filters
        $('#archive-filters .filter').each(function(){

            // vars
            var filter = $(this).data('filter'),
                vals = [];


            // find checked inputs
            $(this).find('input:checked').each(function(){

                vals.push( $(this).val() );

            });


            // append to args
            args[ filter ] = vals.join(',');

        });


        // update url
        url += '?';


        // loop over args
        $.each(args, function( name, value ){

            url += name + '=' + value + '&';

        });


        // remove last &
        url = url.slice(0, -1);


        // reload page
        window.location.replace( url );


    });

})(jQuery);
</script>

все работает отлично, за исключением того, что при нажатии на опции URL не меняется. Например, я выбираю 1: а URL остается прежним. Это должно было измениться на ... /? Проверка = 1: а. Кто-нибудь может мне помочь с этой проблемой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...