Получить теги продуктов в Slider Revolution, WordPress

#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' );