FacetWP: Показывать метки, только если у фасета есть опции - PullRequest
1 голос
/ 03 марта 2020

Я хочу показывать метки, только если у фасета есть какие-либо опции. Поэтому я попытался следующий код:

<script>
(function($) {
    $(document).on('facetwp-loaded', function() {
        $('.facetwp-facet').each(function() {
            var facet_name = $(this).attr('data-name');
            var facet_label = FWP.settings.labels[facet_name];

            if ($('.facet-label[data-for="' + facet_name + '"]').length < 1 && $(this).children()
                .length > 0) {
                $(this).before('<p class="h5 facet-label" data-for="' + facet_name + '">' + facet_label + '</p>');
            }
        });
    });
})(jQuery);
</script>

Это работает, но только если я перезагрузить страницу с активными фильтрами. Если я поменяю фильтр, ярлыки останутся.

Можно ли спросить, есть ли новые фильтры после щелчка?

1 Ответ

1 голос
/ 03 марта 2020

Автор плагина подсказал мне решение:

<script>
    (function($) {
        $(document).on('facetwp-loaded', function() {
            $('.facetwp-facet').each(function() {
                var facet_name = $(this).attr('data-name');
                var facet_label = FWP.settings.labels[facet_name];
                if ( 'undefined' !== typeof FWP.settings.num_choices[facet_name] && FWP.settings.num_choices[facet_name] > 0 && $('.facet-label[data-for="' + facet_name + '"]').length < 1 ) {
                    $(this).before('<h3 class="facet-label" data-for="' + facet_name + '">' + facet_label + '</h3>');
                } else if ( 'undefined' !== typeof FWP.settings.num_choices[facet_name] && !FWP.settings.num_choices[facet_name] > 0 ) {
                    $('.facet-label[data-for="' + facet_name + '"]').remove();
                } 
            });
        });
    })(jQuery);
    </script>
...