architect_engineer_add( 'WPTRT\\Customize\\Section', get_theme_file_path( 'vendor/wptrt/customize-section-button/src' ) ); $Architect_Engineer_Loader->architect_engineer_register(); if ( ! function_exists( 'architect_engineer_setup' ) ) : /** * Sets up theme defaults and registers support for various WordPress features. * * Note that this function is hooked into the after_setup_theme hook, which * runs before the init hook. The init hook is too late for some features, such * as indicating support for post thumbnails. */ function architect_engineer_setup() { load_theme_textdomain( 'architect-engineer', get_template_directory() . '/languages' ); add_theme_support( 'woocommerce' ); add_theme_support( "responsive-embeds" ); add_theme_support( "align-wide" ); add_theme_support( "wp-block-styles" ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); /* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' ); /* * Enable support for Post Thumbnails on posts and pages. * * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ */ add_theme_support( 'post-thumbnails' ); add_image_size('architect-engineer-featured-header-image', 2000, 660, true); // This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'primary' => esc_html__( 'Primary','architect-engineer' ), 'footer'=> esc_html__( 'Footer Menu','architect-engineer' ), ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. * to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', ) ); // Set up the WordPress core custom background feature. add_theme_support( 'custom-background', apply_filters( 'architect_engineer_custom_background_args', array( 'default-color' => 'f7ebe5', 'default-image' => '', ) ) ); // Add theme support for selective refresh for widgets. add_theme_support( 'customize-selective-refresh-widgets' ); /** * Add support for core custom logo. * * @link https://codex.wordpress.org/Theme_Logo */ add_theme_support( 'custom-logo', array( 'height' => 50, 'width' => 50, 'flex-width' => true, ) ); add_editor_style( array( '/editor-style.css' ) ); add_action('wp_ajax_architect_engineer_dismissable_notice', 'architect_engineer_dismissable_notice'); } endif; add_action( 'after_setup_theme', 'architect_engineer_setup' ); /** * Set the content width in pixels, based on the theme's design and stylesheet. * * Priority 0 to make it available to lower priority callbacks. * * @global int $content_width */ function architect_engineer_content_width() { $GLOBALS['content_width'] = apply_filters( 'architect_engineer_content_width', 1170 ); } add_action( 'after_setup_theme', 'architect_engineer_content_width', 0 ); /** * Register widget area. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function architect_engineer_widgets_init() { register_sidebar( array( 'name' => esc_html__( 'Sidebar', 'architect-engineer' ), 'id' => 'sidebar', 'description' => esc_html__( 'Add widgets here.', 'architect-engineer' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Sidebar 1', 'architect-engineer' ), 'id' => 'sidebar1', 'description' => esc_html__( 'Add widgets here.', 'architect-engineer' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Sidebar 2', 'architect-engineer' ), 'id' => 'sidebar2', 'description' => esc_html__( 'Add widgets here.', 'architect-engineer' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Front Page Sidebar', 'architect-engineer' ), 'id' => 'front-sidebar', 'description' => esc_html__( 'Add widgets here.', 'architect-engineer' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Woocommerce Shop Page Sidebar', 'architect-engineer' ), 'id' => 'woocommerce-shop-page-sidebar', 'description' => '', 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Woocommerce Single Product Page Sidebar', 'architect-engineer' ), 'id' => 'woocommerce-single-product-page-sidebar', 'description' => '', 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h5 class="widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Footer Column 1', 'architect-engineer' ), 'id' => 'architect-engineer-footer1', 'description' => '', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h5 class="footer-column-widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Footer Column 2', 'architect-engineer' ), 'id' => 'architect-engineer-footer2', 'description' => '', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h5 class="footer-column-widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Footer Column 3', 'architect-engineer' ), 'id' => 'architect-engineer-footer3', 'description' => '', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h5 class="footer-column-widget-title">', 'after_title' => '</h5>', ) ); register_sidebar( array( 'name' => esc_html__( 'Footer Column 4', 'architect-engineer' ), 'id' => 'architect-engineer-footer4', 'description' => '', 'before_widget' => '<aside id="%1$s" class="widget %2$s">', 'after_widget' => '</aside>', 'before_title' => '<h5 class="footer-column-widget-title">', 'after_title' => '</h5>', ) ); } add_action( 'widgets_init', 'architect_engineer_widgets_init' ); /** * Enqueue scripts and styles. */ function architect_engineer_scripts() { require_once get_theme_file_path( 'inc/wptt-webfont-loader.php' ); wp_enqueue_style( 'josefin', wptt_get_webfont_url( 'https://fonts.googleapis.com/css2?family=Josefin+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap' ), array(), '1.0' ); wp_enqueue_style( 'lato', wptt_get_webfont_url( 'https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,100;0,300;0,400;0,700;0,900;1,100;1,300;1,400;1,700;1,900&display=swap' ), array(), '1.0' ); wp_enqueue_style( 'architect-engineer-block-editor-style', get_theme_file_uri('/assets/css/block-editor-style.css') ); // load bootstrap css wp_enqueue_style( 'bootstrap-css',get_template_directory_uri() . '/assets/css/bootstrap.css'); wp_enqueue_style( 'owl.carousel-css',get_template_directory_uri() . '/assets/css/owl.carousel.css'); wp_enqueue_style( 'architect-engineer-style', get_stylesheet_uri() ); require get_parent_theme_file_path( '/custom-option.php' ); wp_add_inline_style( 'architect-engineer-style',$architect_engineer_theme_css ); wp_style_add_data('architect-engineer-basic-style', 'rtl', 'replace'); // fontawesome wp_enqueue_style( 'fontawesome-style',get_template_directory_uri().'/assets/css/fontawesome/css/all.css' ); wp_enqueue_script('architect-engineer-theme-js',get_template_directory_uri() . '/assets/js/theme-script.js', array('jquery'), '', true ); wp_enqueue_script('owl.carousel-js',get_template_directory_uri() . '/assets/js/owl.carousel.js', array('jquery'), '', true ); if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } } add_action( 'wp_enqueue_scripts', 'architect_engineer_scripts' ); /** * Enqueue Preloader. */ function architect_engineer_preloader() { $architect_engineer_theme_color_css = ''; $architect_engineer_preloader_bg_color = get_theme_mod('architect_engineer_preloader_bg_color'); $architect_engineer_preloader_dot_1_color = get_theme_mod('architect_engineer_preloader_dot_1_color'); $architect_engineer_preloader_dot_2_color = get_theme_mod('architect_engineer_preloader_dot_2_color'); $architect_engineer_preloader2_dot_color = get_theme_mod('architect_engineer_preloader2_dot_color'); $architect_engineer_logo_max_height = get_theme_mod('architect_engineer_logo_max_height'); if(get_theme_mod('architect_engineer_logo_max_height') == '') { $architect_engineer_logo_max_height = '24'; } if(get_theme_mod('architect_engineer_preloader_dot_1_color') == '') { $architect_engineer_preloader_dot_1_color = '#000'; } if(get_theme_mod('architect_engineer_preloader_dot_2_color') == '') { $architect_engineer_preloader_dot_2_color = 'var(--first-color)'; } $architect_engineer_theme_color_css = ' .custom-logo-link img{ max-height: '.esc_attr($architect_engineer_logo_max_height).'px; } .loading, .loading2{ background-color: '.esc_attr($architect_engineer_preloader_bg_color).'; } @keyframes loading { 0%, 100% { transform: translatey(-2.5rem); background-color: '.esc_attr($architect_engineer_preloader_dot_1_color).'; } 50% { transform: translatey(2.5rem); background-color: '.esc_attr($architect_engineer_preloader_dot_2_color).'; } } .load hr { background-color: '.esc_attr($architect_engineer_preloader2_dot_color).'; } '; wp_add_inline_style( 'architect-engineer-style',$architect_engineer_theme_color_css ); } add_action( 'wp_enqueue_scripts', 'architect_engineer_preloader' ); function cake_shop_bakery_files_setup() { /** * Custom template tags for this theme. */ require get_template_directory() . '/inc/template-tags.php'; /** * Implement the Custom Header feature. */ require get_template_directory() . '/inc/custom-header.php'; /** * Functions which enhance the theme by hooking into WordPress. */ require get_template_directory() . '/inc/template-functions.php'; /* TGM. */ require get_parent_theme_file_path( '/inc/tgm.php' ); /** * Customizer additions. */ require get_template_directory() . '/inc/customizer.php'; if ( ! defined( 'ARCHITECT_ENGINEER_CONTACT_SUPPORT' ) ) { define( 'FREE_MNSSP_API_URL', 'https://license.themagnifico.net/api/general/' ); define('ARCHITECT_ENGINEER_CONTACT_SUPPORT',__('https://wordpress.org/support/theme/architect-engineer','architect-engineer')); } if ( ! defined( 'ARCHITECT_ENGINEER_REVIEW' ) ) { define('ARCHITECT_ENGINEER_REVIEW',__('https://wordpress.org/support/theme/architect-engineer/reviews/#new-post','architect-engineer')); } if ( ! defined( 'ARCHITECT_ENGINEER_LIVE_DEMO' ) ) { define('ARCHITECT_ENGINEER_LIVE_DEMO',__('https://demo.themagnifico.net/architect-engineer/','architect-engineer')); } if ( ! defined( 'ARCHITECT_ENGINEER_GET_PREMIUM_PRO' ) ) { define('ARCHITECT_ENGINEER_GET_PREMIUM_PRO',__('https://www.themagnifico.net/products/engineer-wordpress-theme','architect-engineer')); } if ( ! defined( 'ARCHITECT_ENGINEER_PRO_DOC' ) ) { define('ARCHITECT_ENGINEER_PRO_DOC',__('https://demo.themagnifico.net/eard/wathiqa/architect-engineer-pro-doc/','architect-engineer')); } if ( ! defined( 'ARCHITECT_ENGINEER_FREE_DOC' ) ) { define('ARCHITECT_ENGINEER_FREE_DOC',__('https://demo.themagnifico.net/eard/wathiqa/architect-engineer-free-doc/','architect-engineer')); } if ( ! defined( 'ARCHITECT_ENGINEER_BUNDLE_LINK' ) ) { define('ARCHITECT_ENGINEER_BUNDLE_LINK',__('https://www.themagnifico.net/products/wordpress-theme-bundle','architect-engineer')); } } add_action( 'after_setup_theme', 'cake_shop_bakery_files_setup' ); /** * Posts pagination. */ if ( ! function_exists( 'architect_engineer_blog_posts_pagination' ) ) { function architect_engineer_blog_posts_pagination() { $pagination_type = get_theme_mod( 'architect_engineer_blog_pagination_type', 'blog-nav-numbers' ); if ( $pagination_type == 'blog-nav-numbers' ) { the_posts_pagination(); } else { the_posts_navigation(); } } } /*dropdown page sanitization*/ function architect_engineer_sanitize_dropdown_pages( $page_id, $setting ) { $page_id = absint( $page_id ); return ( 'publish' == get_post_status( $page_id ) ? $page_id : $setting->default ); } function architect_engineer_preloader1(){ if(get_theme_mod('architect_engineer_preloader_type', 'Preloader 1') == 'Preloader 1' ) { return true; } return false; } function architect_engineer_preloader2(){ if(get_theme_mod('architect_engineer_preloader_type', 'Preloader 1') == 'Preloader 2' ) { return true; } return false; } /*checkbox sanitization*/ function architect_engineer_sanitize_checkbox( $input ) { // Boolean check return ( ( isset( $input ) && true == $input ) ? true : false ); } function architect_engineer_sanitize_phone_number( $phone ) { return preg_replace( '/[^\d+]/', '', $phone ); } //Float function architect_engineer_sanitize_float( $input ) { return filter_var($input, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION); } //SELECT function architect_engineer_sanitize_select( $input, $setting ){ $input = sanitize_key($input); $choices = $setting->manager->get_control( $setting->id )->choices; return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); } /*radio button sanitization*/ function architect_engineer_sanitize_choices( $input, $setting ) { global $wp_customize; $control = $wp_customize->get_control( $setting->id ); if ( array_key_exists( $input, $control->choices ) ) { return $input; } else { return $setting->default; } } function architect_engineer_sanitize_number_absint( $number, $setting ) { // Ensure $number is an absolute integer (whole number, zero or greater). $number = absint( $number ); // If the input is an absolute integer, return it; otherwise, return the default return ( $number ? $number : $setting->default ); } function architect_engineer_sanitize_number_range( $number, $setting ) { // Ensure input is an absolute integer. $number = absint( $number ); // Get the input attributes associated with the setting. $atts = $setting->manager->get_control( $setting->id )->input_attrs; // Get minimum number in the range. $min = ( isset( $atts['min'] ) ? $atts['min'] : $number ); // Get maximum number in the range. $max = ( isset( $atts['max'] ) ? $atts['max'] : $number ); // Get step. $step = ( isset( $atts['step'] ) ? $atts['step'] : 1 ); // If the number is within the valid range, return it; otherwise, return the default return ( $min <= $number && $number <= $max && is_int( $number / $step ) ? $number : $setting->default ); } // Change number or products per row to 3 add_filter('loop_shop_columns', 'architect_engineer_loop_columns'); if (!function_exists('architect_engineer_loop_columns')) { function architect_engineer_loop_columns() { $columns = get_theme_mod( 'architect_engineer_products_per_row', 3 ); return $columns; // 3 products per row } } //Change number of products that are displayed per page (shop page) add_filter( 'loop_shop_per_page', 'architect_engineer_shop_per_page', 9 ); function architect_engineer_shop_per_page( $cols ) { $cols = get_theme_mod( 'architect_engineer_product_per_page', 9 ); return $cols; } if ( class_exists( 'WP_Customize_Control' ) ) { // Image Toggle Radio Buttpon class Architect_Engineer_Image_Radio_Control extends WP_Customize_Control { public function render_content() { if (empty($this->choices)) return; $name = '_customize-radio-' . $this->id; ?> <span class="customize-control-title"><?php echo esc_html($this->label); ?></span> <ul class="controls" id='architect-engineer-img-container'> <?php foreach ($this->choices as $value => $label) : $class = ($this->value() == $value) ? 'architect-engineer-radio-img-selected architect-engineer-radio-img-img' : 'architect-engineer-radio-img-img'; ?> <li style="display: inline;"> <label> <input <?php $this->link(); ?>style = 'display:none' type="radio" value="<?php echo esc_attr($value); ?>" name="<?php echo esc_attr($name); ?>" <?php $this->link(); checked($this->value(), $value); ?> /> <img src='<?php echo esc_url($label); ?>' class='<?php echo esc_attr($class); ?>' /> </label> </li> <?php endforeach; ?> </ul> <?php } } } /** * Get CSS */ function architect_engineer_getpage_css($hook) { wp_register_script( 'admin-notice-script', get_template_directory_uri() . '/inc/admin/js/admin-notice-script.js', array( 'jquery' ) ); wp_localize_script('admin-notice-script','architect_engineer', array('admin_ajax' => admin_url('admin-ajax.php'),'wpnonce' => wp_create_nonce('architect_engineer_dismissed_notice_nonce') ) ); wp_enqueue_script('admin-notice-script'); wp_localize_script( 'admin-notice-script', 'architect_engineer_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) ); if ( 'appearance_page_architect-engineer-info' != $hook ) { return; } } add_action( 'admin_enqueue_scripts', 'architect_engineer_getpage_css' ); //Admin Notice For Getstart function architect_engineer_ajax_notice_handler() { if ( isset( $_POST['type'] ) ) { $type = sanitize_text_field( wp_unslash( $_POST['type'] ) ); update_option( 'dismissed-' . $type, TRUE ); } } function architect_engineer_deprecated_hook_admin_notice() { $dismissed = get_user_meta(get_current_user_id(), 'architect_engineer_dismissable_notice', true); if ( !$dismissed) { ?> <div class="updated notice notice-success is-dismissible notice-get-started-class" data-notice="get_started" style="background: #f7f9f9; padding: 20px 10px; display: flex;"> <div class="tm-admin-image"> <img style="width: 100%;max-width: 320px;line-height: 40px;display: inline-block;vertical-align: top;border: 2px solid #ddd;border-radius: 4px;" src="<?php echo esc_url(get_stylesheet_directory_uri()) .'/screenshot.png'; ?>" /> </div> <div class="tm-admin-content" style="padding-left: 30px; align-self: center"> <h2 style="font-weight: 600;line-height: 1.3; margin: 0px;"><?php esc_html_e('Thank You For Choosing ', 'architect-engineer'); ?><?php echo wp_get_theme(); ?><h2> <p style="color: #3c434a; font-weight: 400; margin-bottom: 30px;"><?php _e('Get Started With Theme By Clicking On Getting Started.', 'architect-engineer'); ?><p> <a class="admin-notice-btn button button-primary button-hero" href="<?php echo esc_url( admin_url( 'themes.php?page=architect-engineer-info' )); ?>"><?php esc_html_e( 'Get started', 'architect-engineer' ) ?></a> <a class="admin-notice-btn button button-primary button-hero notice-pro-btn" target="_blank" href="<?php echo esc_url( ARCHITECT_ENGINEER_GET_PREMIUM_PRO ); ?>"><?php esc_html_e( 'Get Premium ', 'architect-engineer' ) ?></a> <a class="admin-notice-btn button button-primary button-hero notice-bundle-btn" target="_blank" href="<?php echo esc_url( ARCHITECT_ENGINEER_BUNDLE_LINK ); ?>"><?php esc_html_e( 'Buy All Themes - 120+ Templates', 'architect-engineer' ) ?></a> <span style="padding-top: 15px; display: inline-block; padding-left: 8px;"> <span style="padding-top: 15px; display: inline-block; padding-left: 8px;"> <a class="admin-notice-btn" target="_blank" href="<?php echo esc_url( ARCHITECT_ENGINEER_LIVE_DEMO ); ?>"><?php esc_html_e( 'View Demo', 'architect-engineer' ) ?></a> </span> </div> </div> <?php } } add_action( 'admin_notices', 'architect_engineer_deprecated_hook_admin_notice' ); function architect_engineer_switch_theme() { delete_user_meta(get_current_user_id(), 'architect_engineer_dismissable_notice'); } add_action('after_switch_theme', 'architect_engineer_switch_theme'); function architect_engineer_dismissable_notice() { update_user_meta(get_current_user_id(), 'architect_engineer_dismissable_notice', true); die(); } /** * Theme Info. */ function architect_engineer_theme_info_load() { require get_theme_file_path( '/inc/theme-installation/theme-installation.php' ); } add_action( 'init', 'architect_engineer_theme_info_load' ); // Getstart Function function free_mnssp_get_filtered_products($cursor = '', $search = '', $collection = 'pro') { $endpoint_url = FREE_MNSSP_API_URL . 'getFilteredProducts'; $remote_post_data = array( 'collectionHandle' => $collection, 'productHandle' => $search, 'paginationParams' => array( "first" => 12, "afterCursor" => $cursor, "beforeCursor" => "", "reverse" => true ) ); $body = wp_json_encode($remote_post_data); $options = [ 'body' => $body, 'headers' => [ 'Content-Type' => 'application/json' ] ]; $response = wp_remote_post($endpoint_url, $options); if (!is_wp_error($response)) { $response_body = wp_remote_retrieve_body($response); $response_body = json_decode($response_body); if (isset($response_body->data) && !empty($response_body->data)) { if (isset($response_body->data->products) && !empty($response_body->data->products)) { return array( 'products' => $response_body->data->products, 'pagination' => $response_body->data->pageInfo ); } } return []; } return []; } function free_mnssp_get_filtered_products_ajax() { $cursor = isset($_POST['cursor']) ? sanitize_text_field(wp_unslash($_POST['cursor'])) : ''; $search = isset($_POST['search']) ? sanitize_text_field(wp_unslash($_POST['search'])) : ''; $collection = isset($_POST['collection']) ? sanitize_text_field(wp_unslash($_POST['collection'])) : 'pro'; check_ajax_referer('free_mnssp_create_pagination_nonce_action', 'mnssp_pagination_nonce'); $get_filtered_products = free_mnssp_get_filtered_products($cursor, $search, $collection); ob_start(); if (isset($get_filtered_products['products']) && !empty($get_filtered_products['products'])) { foreach ( $get_filtered_products['products'] as $product ) { $product_obj = $product->node; if (isset($product_obj->inCollection) && !$product_obj->inCollection) { continue; } $product_obj = $product->node; $demo_url = isset($product->node->metafield->value) ? $product->node->metafield->value : ''; $product_url = isset($product->node->onlineStoreUrl) ? $product->node->onlineStoreUrl : ''; $image_src = isset($product->node->images->edges[0]->node->src) ? $product->node->images->edges[0]->node->src : ''; $price = isset($product->node->variants->edges[0]->node->price) ? '$' . $product->node->variants->edges[0]->node->price : ''; ?> <div class="mnssp-grid-item"> <div class="mnssp-image-wrap"> <img src="<?php echo esc_url($image_src); ?>" alt="<?php echo esc_attr($product_obj->title); ?>"> <div class="mnssp-image-overlay"> <a class="mnssp-demo-url mnssp-btn" href="<?php echo esc_attr($demo_url); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html('Demo'); ?></a> <a class="mnssp-buy-now mnssp-btn" href="<?php echo esc_attr($product_url); ?>" target="_blank" rel="noopener noreferrer"><?php echo esc_html('Buy Now'); ?></a> </div> </div> <footer> <h3><?php echo esc_html($product_obj->title); ?></h3> </footer> <div class="mnssp-grid-item-price">Price: <?php echo esc_html($price); ?></div> </div> <?php } } $output = ob_get_clean(); $pagination = isset($get_filtered_products['pagination']) ? $get_filtered_products['pagination'] : []; wp_send_json(array( 'content' => $output, 'pagination' => $pagination )); } add_action('wp_ajax_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax'); add_action('wp_ajax_nopriv_free_mnssp_get_filtered_products', 'free_mnssp_get_filtered_products_ajax'); function free_mnssp_get_collections() { $endpoint_url = FREE_MNSSP_API_URL . 'getCollections'; $options = [ 'body' => [], 'headers' => [ 'Content-Type' => 'application/json' ] ]; $response = wp_remote_post($endpoint_url, $options); if (!is_wp_error($response)) { $response_body = wp_remote_retrieve_body($response); $response_body = json_decode($response_body); if (isset($response_body->data) && !empty($response_body->data)) { return $response_body->data; } return []; } return []; }