HEX
Server: Apache
System: Linux webm014.cluster128.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User: circuix (152771)
PHP: 8.0.30
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/c/i/r/circuix/adrRc/wp-content/plugins/essential-blocks/includes/rest-api.php
<?php

defined('ABSPATH') || exit;


class EBRestApi
{

    public function __construct()
    {
        add_action('rest_api_init', array($this, 'eb_register_route'));
    }


    /**
     * REST API Action
     */
    public function eb_register_route()
    {
        register_rest_route(
            'essential-blocks/v1',
            'products',
            array(
                'methods' => \WP_REST_Server::READABLE,
                'args' => array(
                    'order_by' => [], "order" => [], "per_page" => [], "offset" => [], "category" => [], "tag" => []
                ),
                'callback' => array($this, 'eb_route_product_data'),
                'permission_callback' => '__return_true'
            )
        );
    }

    public function eb_route_product_data($prams, $local = false)
    {
        $data = [];
        $loop = new \WP_Query(EBHelpers::woo_products_query_builder($prams));

        if ($loop->have_posts()) {
            while ($loop->have_posts()) {
                $loop->the_post();

                $products                = array();
                $post_id                 = get_the_ID();
                $product                 = wc_get_product($post_id);
                $products['id']          = $post_id;
                $products['title']       = get_the_title();
                $products['permalink']   = get_permalink();
                $products['excerpt']     = strip_tags(get_the_content());
                $products['excerpt_full'] = strip_tags(get_the_excerpt());
                $products['time']        = get_the_date();
                $products['price']       = $product->get_price();
                $products['price_sale']  = $product->get_sale_price();
                $products['price_regular'] = $product->get_regular_price();
                $products['discount']    = ($products['price_sale'] && $products['price_regular']) ? round(($products['price_regular'] - $products['price_sale']) / $products['price_regular'] * 100) . '%' : '';
                $products['sale']        = $product->is_on_sale();
                $products['price_html']  = $product->get_price_html();
                $products['stock']       = $product->get_stock_status();
                $products['featured']    = $product->is_featured();
                $products['rating_count'] = $product->get_rating_count();
                $products['rating_average'] = $product->get_average_rating();
                $products['add_to_cart_url'] = $product->add_to_cart_url();
                $products['add_to_cart_text'] = $product->add_to_cart_text();
                $products['type'] = $product->get_type();


                // image
                if (has_post_thumbnail()) {
                    $thumb_id = get_post_thumbnail_id($post_id);
                    $image_sizes = get_intermediate_image_sizes();
                    $image_src = array();
                    foreach ($image_sizes as $key => $value) {
                        $image_src[$value] = wp_get_attachment_image_src($thumb_id, $value, false)[0];
                    }
                    $products['image'] = $image_src;
                }

                // tag
                $tag = get_the_terms($post_id, 'product_tag');
                if (!empty($tag)) {
                    $all_tag = array();
                    foreach ($tag as $val) {
                        $all_tag[] = array('term_id' => $val->term_id, 'slug' => $val->slug, 'name' => $val->name, 'url' => get_term_link($val->term_id));
                    }
                    $products['tag'] = $all_tag;
                }

                // cat
                $cat = get_the_terms($post_id, 'product_cat');
                if (!empty($cat)) {
                    $all_cats = array();
                    foreach ($cat as $val) {
                        $all_cats[] = array('term_id' => $val->term_id, 'slug' => $val->slug, 'name' => $val->name, 'url' => get_term_link($val->term_id));
                    }
                    $products['category'] = $all_cats;
                }
                $data[] = $products;
            }
            wp_reset_postdata();
        }
        return $data;
    }
}