如何在WooCommerce的自定义下拉列表中按字母顺序添加“按产品标签排序”?

问题描述

受到Make tag show as dropdown in woocommerce

的启发

这使我可以向WooCommerce添加一个下拉列表,以在其中显示我所有的唱片公司。我做了一点修改。

我已经发现通过将show all选项移至foreach循环(为不同标签创建选项)之前,将“ VIEW ALL”选项显示为最佳结果。


我的问题:是否可以添加“ VIEW ALL A-Z”以将所有结果按字母顺序排列到列表中?我还没有找到一个可以在我的网站上按标签排序的代码,所以这就是我试图通过此代码实现这一目的的原因。

这是我的代码,已经稍作修改:

function displayArtistDropdown() {

  $html = '';
    $html .= '<form class="artist-select" method="post">';
    $html .= '<select id="artist-selector" name="artist" class="artist">';

    $tag = wp_tag_cloud( array(
        'format' => 'array','taxonomy' => 'product_tag' 
    ) );
    $page_path = $_SERVER["REQUEST_URI"];
    $page_url = site_url() . $page_path;
    $url_parts = parse_url($page_url);
    $constructed_url = $url_parts['scheme'] . '://' . $url_parts['host'] . (isset($url_parts['path'])?$url_parts['path']:'');

    $html .= '<option value="#">SELECT ARTIST</option>';
    $html .= '<option value="' . $constructed_url . '">View All Artists</option>';

    foreach($tag as $tagkey => $tagvalue)
    {
        $cleanedup = strip_tags($tagvalue);
        $tag_info = get_term_by('name',$cleanedup,'product_tag','ARRAY_A');
        $tag_slug = $tag_info['slug'];
        if(isset($_GET['product_tag'])) { /// I am not sure if it is necessery
            $value_url = $constructed_url . '?product_tag=' . $tag_slug;
        } else {
            $value_url = $page_url . '?product_tag=' . $tag_slug;
        }
        /// (this prevent duplicate in URL in my case) $value_url = site_url() . '?product_tag=' . $tag_slug;
        $html .= '<option value="' . $value_url . '">' . $cleanedup . '</option>';
    }

    $html .= '</select>';
    $html .= '</form>';

    echo $html;
}

add_action('woocommerce_before_shop_loop','displayArtistDropdown',40);

add_action('wp_head','addDisplayArtistScript');
function addDisplayArtistScript() {
    $script = '';
    $script .= '<script type="text/javascript">';
    $script .= 'jQuery(document).ready(function() {';
    $script .= '    jQuery("#artist-selector").change(function() {';
    $script .= '        location = jQuery("#artist-selector option:selected").val();';
    $script .= '    });';
    $script .= '});';
    $script .= '</script>';

    echo $script;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)