带有自定义字段过滤器(ACF)的WP归档如何工作

时间:2020-01-10 01:58:49

标签: jquery wordpress

我使用的是“高级自定义字段”,并且一直跟随着本教程中有关使用“使用自定义字段过滤器创建WP归档文件”的教程

  • 字段名称:选中字段
  • 字段类型:选中
  • 选择: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:a。有人可以帮我解决这个问题吗

0 个答案:

没有答案