Поддержка WooCommerce Добавить функционал в атрибуты taxonomies

  • Доброго времени суток. Имеется wp + woocommerce + плагин woof (woocommerce filter). В частности, этим плагином можно вывести фильтр, который будет искать только в определенной категории товаров, с помощью шорткода [woof taxonomies=product_cat:23] и отображать результаты с помощью шорткода [woof_products taxonomies=product_cat:23], где 23 — это id категории товаров. Однако же не всегда есть возможность указать категорию в самом шорткоде, и хотелось бы реализовать функционал, позволяющий использовать шорткод наподобие [woof taxonomies=product_cat:auto], который будет атоматически определять текущую категорию с помощью определенной функции, например, такой (функция протестирована и работает):

    function show_product_category_id() {
    $cat = get_queried_object();
    $catID = $cat->term_id;
    if (empty($catID)) {
    //если из queried_object не получили категорию, значит нас отредиректило на страницу результатов поиска, возьмем тогда категорию get-запросом
    if (strpos($_GET['really_curr_tax'], 'product_cat')) {
    $catID=str_replace('-product_cat', '', $_GET['really_curr_tax']);
    }
    else {}
    }
    else {}
    echo $catID;
    }

    Я могу, само собой, создать шорткод для это функции, и добавить его в functions.php темы:

    add_shortcode( 'show_product_category_id', 'show_product_category_id' );

    и он будет работать, но не могу же использовать в итоге конструкцию вида [woof taxonomies=product_cat:[show_product_category_id]], так как вложенные шорткоды в wordpress не будут работать. Поэтому, судя по всему, мне нужно добавить в сам woocommerce возможность указывать не только product_cat:35, но и product_cat:auto. Как это сделать и где?

Просмотр 1 ответа (всего 1)
  • В итоге человек с stackoverflow подсказал мне решение данной проблемы. Вложенные шорткоды, само собой, в вордпрессе не будут работать, но ведь можно сделать do_shortcode() внутри функции основного шорткода 🙂

    Таким образом, для решения данной проблемы следует в functions.php прописать такие вот новые комплексные шорткоды:

    function woof_current_product_category_id() {
        $term    = get_queried_object();
        $term_id = 0; // Initializing
    
        if ( isset($_GET['really_curr_tax']) && false !== strpos( $_GET['really_curr_tax'], 'product_cat' ) ) {
            $term_id = (int) str_replace('-product_cat', '', $_GET['really_curr_tax']);
        } elseif ( is_a($term, 'WP_Term') ) {
            $term_id = (int) $term->term_id;
        }
        return do_shortcode("[woof taxonomies=product_cat:$term_id]"); 
    }
    
    function woof_products_current_product_category_id() {
        $term    = get_queried_object();
        $term_id = 0; // Initializing
    
        if ( isset($_GET['really_curr_tax']) && false !== strpos( $_GET['really_curr_tax'], 'product_cat' ) ) {
            $term_id = (int) str_replace('-product_cat', '', $_GET['really_curr_tax']);
        } elseif ( is_a($term, 'WP_Term') ) {
            $term_id = (int) $term->term_id;
        }
        return do_shortcode("[woof_products per_page=12 columns=3 taxonomies=product_cat:$term_id]"); 
    }
    
    add_shortcode( 'woof_auto_category', 'woof_current_product_category_id' );
    add_shortcode( 'woof_products_auto_category', 'woof_products_current_product_category_id' );

    И вместо [woof taxonomies=…] и [woof_products taxonomies=…] использовать [woof_auto_category] и [woof_products_auto_category]

Просмотр 1 ответа (всего 1)
  • Тема «Добавить функционал в атрибуты taxonomies» закрыта для новых ответов.