BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
home
/
imagivibe
/
public_html
/
wp-content
/
plugins
/
porto-functionality
/
elementor
/
restapi
📤 Upload
📝 New File
📁 New Folder
Close
Editing: ajaxselect2.php
<?php /** * Get posts and terms in editor * * @since 2.1.0 */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Porto_Elementor_Ajax_Select2_Api { public function action( $request ) { if ( isset( $request['method'] ) && in_array( $request['method'], array( 'product_cat', 'category', 'portfolio_cat', 'member_cat', 'faq_cat', 'nav_menu' ) ) ) { return $this->get_terms( $request ); } elseif ( isset( $request['method'] ) && 'orderby' == $request['method'] ) { return $this->get_orderby( $request ); } elseif ( false !== strpos( $request['method'], '_alltax' ) ) { $options = array( array( 'id' => '', 'text' => esc_html__( 'All', 'porto-functionality' ), ), ); if ( ! empty( $request['condition'] ) ) { $new_taxonomies = get_object_taxonomies( $request['condition'], 'objects' ); foreach ( $new_taxonomies as $new_taxonomy ) { if ( in_array( $new_taxonomy->name, array( 'post_format', 'product_visibility' ) ) ) { continue; } $options[] = array( 'id' => esc_html( $new_taxonomy->name ), 'text' => esc_html( $new_taxonomy->label ), ); } } elseif ( isset( $request['ids'] ) ) { $tax = get_taxonomy( $request['ids'] ); if ( $tax && ! is_wp_error( $tax ) ) { $options[] = array( 'id' => esc_html( $tax->name ), 'text' => esc_html( $tax->label ), ); } } return array( 'results' => $options ); } elseif ( false !== strpos( $request['method'], '_allterm' ) ) { $options = array(); if ( ! empty( $request['condition'] ) ) { $args = array( 'taxonomy' => sanitize_text_field( $request['condition'] ), // taxonomy name 'hide_empty' => false, 'fields' => 'id=>name', ); if ( isset( $request['s'] ) ) { $args['name__like'] = sanitize_text_field( $request['s'] ); } $terms = get_terms( $args ); if ( isset( $request['add_default'] ) ) { $options[] = array( 'id' => '', 'text' => esc_html__( 'Default', 'porto-functionality' ), ); } foreach ( $terms as $term_id => $term_name ) { $options[] = array( 'id' => esc_html( $term_id ), 'text' => esc_html( $term_name ), ); } } elseif ( ! empty( trim( $request['ids'] ) ) ) { $ids = explode( ',', sanitize_text_field( trim( $request['ids'] ) ) ); foreach ( $ids as $term_id ) { $term = get_term( $term_id ); if ( $term && ! is_wp_error( $term ) ) { $options[] = array( 'id' => esc_html( $term_id ), 'text' => esc_html( $term->name ), ); } } } return array( 'results' => $options ); } elseif ( false !== strpos( $request['method'], '_particularpage' ) ) { // conditional rendering if ( ! empty( $request['condition'] ) ) { return $this->get_posts( array( 'method' => $request['condition'], 'count' => 'all' ) ); } elseif ( ! empty( $request['ids'] ) ) { return $this->get_posts( array( 'method' => 'any', 'ids' => $request['ids'] ) ); } else { return array( 'results' => array() ); } } elseif ( false !== strpos( $request['method'], '_allid' ) ) { $options = array(); if ( isset( $request['s'] ) ) { $post_type = ! empty( $request['condition'] ) ? $request['condition'] : 'post'; $args = array( 'post_type' => $post_type, 'post_status' => 'publish', 'numberposts' => -1, 's' => sanitize_text_field( $request['s'] ), 'search_columns' => 'post_title' ); $posts = get_posts( $args ); if ( ! empty( $posts ) ) { foreach ( $posts as $post ) { $options[] = array( 'id' => $post->ID, 'text' => $post->post_title ); } } } return array( 'results' => $options ); } elseif ( false !== strpos( $request['method'], 'product_ids' ) ) { $options = array(); $ids = array(); if ( ! empty( ( $request['ids'] ) ) ) { $ids = explode( ',', $request['ids'] ); } else { if ( isset( $request['s'] ) ) { $data_store = WC_Data_Store::load( 'product' ); $ids = $data_store->search_products( $request['s'], '', true, false, 10, array(), array() ); } } foreach ( $ids as $id ) { $product_object = wc_get_product( $id ); if ( ! $product_object ) { continue; } $formatted_name = $product_object->get_formatted_name(); $options[] = array( 'id' => $id, 'text' => rawurldecode( wp_strip_all_tags( $formatted_name ) ), ); } return array( 'results' => $options ); } elseif ( isset( $request['method'] ) ) { return $this->get_posts( $request ); } } public function get_posts( $request ) { $post_type = $request['method']; if ( 'porto_builder_type' == $post_type ) { $post_type = 'porto_builder'; } $query_args = array( 'post_type' => sanitize_text_field( $post_type ), 'post_status' => 'publish', 'posts_per_page' => 35, ); if ( ! empty( $request['count'] ) && 'all' == $request['count'] ) { $query_args['posts_per_page'] = 300;//-1; $query_args['fields'] = 'ids'; } if ( isset( $request['ids'] ) ) { if ( empty( $request['ids'] ) ) { return array( 'results' => array() ); } $query_args['post__in'] = explode( ',', sanitize_text_field( $request['ids'] ) ); $query_args['orderby'] = 'post__in'; $query_args['order'] = 'ASC'; } if ( isset( $request['s'] ) ) { $query_args['s'] = sanitize_text_field( $request['s'] ); } if ( 'porto_builder' == $request['method'] ) { $query_args['tax_query'] = array( array( 'taxonomy' => PortoBuilders::BUILDER_TAXONOMY_SLUG, 'field' => 'name', 'terms' => array( 'block' ), ), ); } if ( 'porto_builder_type' == $request['method'] ) { $query_args['tax_query'] = array( array( 'taxonomy' => PortoBuilders::BUILDER_TAXONOMY_SLUG, 'field' => 'name', 'terms' => array( 'type' ), ), ); } $query = new WP_Query( $query_args ); $options = array(); if ( $query->have_posts() ) { if ( isset( $request['add_default'] ) ) { $options[] = array( 'id' => '', 'text' => __( 'None', 'porto-functionality' ), ); } $posts = $query->get_posts(); foreach ( $posts as $p ) { if ( empty( $query_args['fields'] ) ) { $options[] = array( 'id' => (int) $p->ID, 'text' => str_replace( array( '&', ''' ), array( '&', '\'' ), esc_html( $p->post_title ) ), ); } else { $options[] = array( 'id' => (int) $p, 'text' => str_replace( array( '&', ''' ), array( '&', '\'' ), esc_html( get_the_title( $p ) ) ), ); } } } return array( 'results' => $options ); } public function get_terms( $request ) { if ( ! taxonomy_exists( sanitize_text_field( $request['method'] ) ) ) { return array( 'results' => array() ); } $query_args = array( 'taxonomy' => sanitize_text_field( $request['method'] ), // taxonomy name 'hide_empty' => false, ); if ( isset( $request['ids'] ) ) { if ( empty( $request['ids'] ) ) { return array( 'results' => array() ); } $query_args['include'] = explode( ',', sanitize_text_field( $request['ids'] ) ); $query_args['orderby'] = 'include'; $query_args['order'] = 'ASC'; } if ( isset( $request['s'] ) ) { $query_args['name__like'] = sanitize_text_field( $request['s'] ); } $terms = get_terms( $query_args ); $options = array(); if ( count( $terms ) ) : if ( isset( $request['add_default'] ) ) { $options[] = array( 'id' => '', 'text' => esc_html__( 'Default', 'porto-functionality' ), ); } foreach ( $terms as $term ) { $options[] = array( 'id' => (int) $term->term_id, 'text' => str_replace( array( '&', ''' ), array( '&', '\'' ), esc_html( $term->name ) ), ); } endif; return array( 'results' => $options ); } public function get_orderby( $request ) { $ids = array(); if ( isset( $request['ids'] ) ) { if ( empty( $request['ids'] ) ) { return array( 'results' => array() ); } else { $ids = explode( ',', $request['ids'] ); } } else { $ids = array_values( porto_vc_woo_order_by() ); } $arr = array_flip( porto_vc_woo_order_by() ); foreach ( $ids as $id ) { if ( ! empty( $id ) ) { $id = trim( $id ); $options[] = array( 'id' => $id, 'text' => $arr[ $id ], ); } } return array( 'results' => $options ); } } function porto_elementor_ajax_select2_api( WP_REST_Request $request ) { $class = new Porto_Elementor_Ajax_Select2_Api(); return $class->action( $request ); } add_action( 'rest_api_init', function () { register_rest_route( 'ajaxselect2/v1', '/(?P<method>[\w-]+)/', array( 'methods' => 'GET', 'callback' => 'porto_elementor_ajax_select2_api', 'permission_callback' => '__return_true', ) ); } );
Save
Cancel