#wordpress
#wordpress
Вопрос:
Я сделал некоторый пользовательский код для создания выпадающей кнопки, но пункты меню статичны. Я хочу получить все теги продуктов и разместить их в моем меню. (Имя слаг). По умолчанию у Slider Revolution есть {{wc_tags}}
, но я не получаю никаких результатов от этого. Дополнительно: я также использую группы пользовательских тегов, и я хочу получать теги только из одной категории (но это просто дополнительно).
<ul id="menu">
<li id="menu_button" >
<span> I could use support with...</span>
<i class="fas fa-chevron-down"></i>
<ul id="drop-down">
</ul>
</li>
</ul>
<script>
var data = {
"menu":[
{"name": "Node 1", "link":"{{current_page_link}}private/?product_tag_1=anxiety-and-depression"},
{"name": "Node 2", "link":"#"},
{"name": "Node 3", "link":"#"},
]
};
function parseMenu(element, menu) {
for (var i=0; i<menu.length; i ) {
var nestedli = document.createElement('li');
nestedli.setAttribute('style', 'display:none;');
nestedli.setAttribute('onmouseenter', "showNodes(this)");
nestedli.setAttribute('onmouseleave', "hideNodes(this)");
var link = document.createElement('a');
link.setAttribute('href', menu[i].link);
link.appendChild(document.createTextNode(menu[i].name));
nestedli.appendChild(link);
if (menu[i].submenu!=null) {
var subul = document.createElement('ul');
nestedli.appendChild(subul);
parseMenu(subul, menu[i].submenu);
}
element.appendChild(nestedli);
}
}
function showNodes(element){
var menu = document.getElementById('drop-down');
menu.style.display = "block";
var lis = element.querySelectorAll("ul > li");
for (var i=0;i<lis.length;i ) {
lis[i].style.display = "block";
}
}
function hideNodes(element){
var lis = element.querySelectorAll("ul > li");
for (var i=0;i<lis.length;i ) {
lis[i].style.display = "none";
}
}
function showMenu(){
var menu = document.getElementById('drop-down');
menu.style.display = "block";
var lis = document.querySelectorAll("#drop-down > li");
for (var i=0;i<lis.length;i ) {
lis[i].style.display = "block";
}
}
function hideMenu(){
var menu = document.getElementById('drop-down');
menu.style.display = "none";
}
window.onload=function(){
var menu= document.getElementById('drop-down');
parseMenu(menu, data.menu);
};
</script>
Ответ №1:
Я создаю короткий код, из которого я получаю все теги из определенной категории.
"menu":[get_wc_tags]
function get_woocommerce_tags(){
$terms = get_terms(array('taxonomy' => 'product_tag', 'hide_empty' => false));
$sorted_terms = [];
foreach ( $terms as $term ) {
$term->link = 'my_url' . $term->slug;
$term_meta = '';
$term_meta = get_term_meta( $term->term_id, '_cm_term_group_array', true );
$term_meta_array = explode(',', $term_meta);
if(in_array('1', $term_meta_array)){
$term->term_group = 1;
array_push( $sorted_terms, $term);
}
}
return json_encode($sorted_terms);
}
add_shortcode( 'get_wc_tags', 'get_woocommerce_tags' );