• Есть ли нативный аналог .on() в JavaScript?

    Ivanq
    @Ivanq
    Знаю php, js, html, css
    1. Только так - например, для новых браузеров:
    document.querySelectorAll('.class').forEach(function(elem) {
      elem.addEventListener("click", my_cool_function);
    });
    // Для старых:
    var elems = document.querySelectorAll('.class');
    for(var i=0;i<elems.length;i++) {
      elems[i].addEventListener("click", my_cool_function);
    }

    2.
    document.querySelectorAll("body").addEventListener("click", function(event) {
      if(!event.target.classList.contains("menu")) return;
      /* Code */
    });
    Ответ написан
  • Как сделать свою сортировку товаров Woocommerce?

    @azerphoenix
    Здравствуйте!

    1) кол-во отображаемых товаров:
    /** Выводим dropdown кол-во товаров **/
    remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 );
    
    function woocommerce_catalog_page_ordering() {
    ?>
    
    <form action="" method="POST" name="results" class="woocommerce-ordering">
    <select name="woocommerce-sort-by-columns" id="woocommerce-sort-by-columns" class="sortby" onchange="this.form.submit()">
    <?php
    
    //Get products on page reload
    if  (isset($_POST['woocommerce-sort-by-columns']) && (($_COOKIE['shop_pageResults'] <> $_POST['woocommerce-sort-by-columns']))) {
            $numberOfProductsPerPage = $_POST['woocommerce-sort-by-columns'];
              } else {
            $numberOfProductsPerPage = $_COOKIE['shop_pageResults'];
              }
                $shopCatalog_orderby = apply_filters('woocommerce_sortby_page', array(
                    '10'        => __('10', 'woocommerce'),
                    '20'        => __('20', 'woocommerce'),
                    '40'        => __('40', 'woocommerce'),
                    '-1'        => __('Все', 'woocommerce'),
                ));
    
            foreach ( $shopCatalog_orderby as $sort_id => $sort_name )
                echo '<option value="' . $sort_id . '" ' . selected( $numberOfProductsPerPage, $sort_id, true ) . ' >' . $sort_name . '</option>';
    ?>
    </select>
    </form>
    
    <?php echo ' </span>' ?>
    <?php
    }
    
    // now we set our cookie if we need to
    function dl_sort_by_page($count) {
      if (isset($_COOKIE['shop_pageResults'])) { // if normal page load with cookie
         $count = $_COOKIE['shop_pageResults'];
      }
      if (isset($_POST['woocommerce-sort-by-columns'])) { //if form submitted
        setcookie('shop_pageResults', $_POST['woocommerce-sort-by-columns'], time()+1209600, '/', 'example.com, false); //this will fail if any part of page has been output- hope this works!
        $count = $_POST['woocommerce-sort-by-columns'];
      }
      // else normal page load and no cookie
      return $count;
    }
    
    add_filter('loop_shop_per_page','dl_sort_by_page');


    не забудьте example.com поменять на ваш домен.

    А для сортировки (по название и т.д.) вызовите это в шаблоне:
    <?php woocommerce_catalog_ordering() ?>

    Пример - test5.md7.info/shop
    Ответ написан