PluginProbe
WPGet API – Connect to any external REST API / 1.8.13
WPGet API – Connect to any external REST API v1.8.13
1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.10 2.2.2 2.2.3 All 97 releases
wpgetapi / frontend / functions.php

functions.php in WPGet API – Connect to any external REST API 1.8.13, at frontend/functions.php

166 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Return the endpoint data
5 */
6 function wpgetapi_endpoint( $api_id = '', $endpoint_id = '', $args = array(), $keys = array() ) {
7
8 if( ! $api_id || ! $endpoint_id )
9 return false;
10
11 $api = new WpGetApi_Api( $api_id, $endpoint_id, $args, $keys );
12
13 return $api->endpoint_output();
14
15 }
16
17 /**
18 * Return the endpoint data via shortcode
19 */
20 function wpgetapi_endpoint_shortcode( $atts = array() ) {
21
22 $a = shortcode_atts( array(
23 'api_id' => '',
24 'endpoint_id' => '',
25 'debug' => false,
26 'args' => array(),
27 'keys' => array(),
28 'endpoint_variables' => array(),
29 'query_variables' => array(),
30 'body_variables' => array(),
31 'format' => '',
32 'html_tag' => 'div',
33 'html_labels' => 'false',
34 'html_url' => '',
35 'html_to_link' => '',
36 'img_key' => '',
37 'img_prepend' => '',
38 'on' => '',
39 'button_text' => '',
40 'hide_button' => '',
41 'button_spinner' => '',
42 'chain' => '',
43 'chain_delay' => '0',
44 ), $atts );
45
46 if( ! isset( $a['api_id'] ) || $a['api_id'] == '' )
47 return __( 'api_id shortcode attribute is not set.', 'wpgetapi' );
48
49 if( ! isset( $a['endpoint_id'] ) || $a['endpoint_id'] == '' )
50 return __( 'endpoint_id shortcode attribute is not set.', 'wpgetapi' );
51
52
53
54 // sort out our keys if using them
55 if( ! empty( $a['keys'] ) ) {
56 // Create our array of values for keys
57 // First, sanitize the data and remove white spaces
58 $no_whitespaces_keys = preg_replace( '/\s*,\s*/', ',', filter_var( $a['keys'], FILTER_SANITIZE_STRING ) );
59 $a['keys'] = explode( ',', $no_whitespaces_keys );
60 }
61
62 // sort out our endpoint_variables if using them
63 if( ! empty( $a['endpoint_variables'] ) ) {
64 // Create our array of values for endpoint_variables
65 // First, sanitize the data and remove white spaces
66 $no_whitespaces_vars = preg_replace( '/\s*,\s*/', ',', filter_var( $a['endpoint_variables'], FILTER_SANITIZE_STRING ) );
67 $a['endpoint_variables'] = explode( ',', $no_whitespaces_vars );
68 }
69
70 // add our shortcode args to the actual 'args' within the endpoint call
71 $a['args']['debug'] = $a['debug'];
72 $a['args']['endpoint_variables'] = $a['endpoint_variables'];
73 $a['args']['query_variables'] = $a['query_variables'];
74 $a['args']['body_variables'] = $a['body_variables'];
75 $a['args']['format'] = $a['format'];
76 $a['args']['html_tag'] = $a['html_tag'];
77 $a['args']['html_labels'] = $a['html_labels'];
78 $a['args']['html_url'] = $a['html_url'];
79 $a['args']['html_to_link'] = $a['html_to_link'];
80 $a['args']['img_key'] = $a['img_key'];
81 $a['args']['img_prepend'] = $a['img_prepend'];
82 $a['args']['shortcode'] = true;
83 $a['args']['on'] = $a['on'];
84 $a['args']['button_text'] = $a['button_text'];
85 $a['args']['hide_button'] = $a['hide_button'];
86 $a['args']['button_spinner'] = $a['button_spinner'];
87 $a['args']['chain'] = $a['chain'];
88 $a['args']['chain_delay'] = $a['chain_delay'];
89
90
91 // if we are doing ajax
92 if( isset( $a['args']['on'] ) && $a['args']['on'] == 'ajax' && ! wp_doing_ajax() ) {
93
94 if( class_exists( 'WpGetApi_Extras_Extend' ) ) {
95
96 add_action( 'wp_footer', array( 'WpGetApi_Extras_Extend', 'ajax_function' ) );
97
98 $button_text = isset( $a['args']['button_text'] ) && $a['args']['button_text'] != '' ? $a['args']['button_text'] : 'Call API';
99
100 ob_start(); ?>
101
102 <div class="wpgetapi_ajax_wrap" data-id="<?php esc_html_e( $a['api_id'] ); ?>-<?php esc_html_e( $a['endpoint_id'] ); ?>">
103 <button
104 class="button btn btn-primary wpgetapi_ajax_request"
105 data-api="<?php esc_html_e( $a['api_id'] ); ?>"
106 data-endpoint="<?php esc_html_e( $a['endpoint_id'] ); ?>"
107 data-args="<?php esc_html_e( json_encode( $a['args'] ) ); ?>"
108 data-keys="<?php esc_html_e( json_encode( $a['keys'] ) ); ?>"
109 data-post_id="<?php esc_html_e( get_the_ID() ); ?>">
110 <span class="button_text"><?php esc_html_e( $button_text ); ?></span>
111 </button>
112 <div class="wpgetapi_ajax_output"></div>
113 </div>
114
115 <?php
116 $result = ob_get_contents();
117 ob_end_clean();
118
119 } else {
120
121 $result = 'You need the <a href="https://wpgetapi.com/downloads/pro-plugin">PRO plugin</a> for this AJAX functionality.';
122
123 }
124
125 } else {
126
127 // [wpgetapi_endpoint api_id='livelearn' endpoint_id='dezzp1' chain='start' keys='UUID']
128 // [wpgetapi_endpoint api_id='livelearn' endpoint_id='dezzp2' chain='end']
129
130 // if we are starting the chain
131 if( ! empty( $a['args']['chain'] ) ) {
132
133 $delay = absint( $a['args']['chain_delay'] );
134
135 // get our result from this chain
136 $result = wpgetapi_endpoint( $a['api_id'], $a['endpoint_id'], $a['args'], $a['keys'] );
137
138 if( $delay > 0 && ! is_admin() )
139 sleep( $delay );
140
141 // set the transient for this chain if not the last chain
142 if( $a['args']['chain'] !== 'end' )
143 set_transient( 'wpgetapi_chain_' . sanitize_text_field( $a['args']['chain'] ), $result, $delay + 10 );
144
145 } else {
146
147 // do our standard return
148 $result = wpgetapi_endpoint( $a['api_id'], $a['endpoint_id'], $a['args'], $a['keys'] );
149
150 }
151
152 }
153
154 if( is_array( $result ) ) {
155 $result = sprintf(
156 __( 'The <b>Results Format</b> for this endpoint is set to \'PHP array data\' - shortcodes are unable to output this type of data.<br>Please change the Results Format to \'JSON string\' in the endpoint settings page.<br>Alternatively, please see our tutorial on %1s.', 'wpgetapi' ),
157 '<a target="_blank" href="https://wpgetapi.com/docs/format-api-data-as-html/?utm_campaign=Shortcode JSON&utm_medium=Admin&utm_source=User">how to format your API data as HTML</a>'
158 );
159 }
160
161 if( $a['args']['format'] !== 'no_display' )
162 return $result;
163
164 }
165 add_shortcode( 'wpgetapi_endpoint', 'wpgetapi_endpoint_shortcode' );
166