问题描述
受到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 (将#修改为@)