PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 10.7.2
Jetpack – WP Security, Backup, Speed, & Growth v10.7.2
15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / json-endpoints / class.wpcom-json-api-render-endpoint.php
jetpack / json-endpoints Last commit date
jetpack 4 years ago class.wpcom-json-api-add-widget-endpoint.php 4 years ago class.wpcom-json-api-autosave-post-v1-1-endpoint.php 5 years ago class.wpcom-json-api-bulk-delete-post-endpoint.php 4 years ago class.wpcom-json-api-bulk-restore-post-endpoint.php 4 years ago class.wpcom-json-api-bulk-update-comments-endpoint.php 4 years ago class.wpcom-json-api-comment-endpoint.php 4 years ago class.wpcom-json-api-delete-media-endpoint.php 4 years ago class.wpcom-json-api-delete-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-edit-media-v1-2-endpoint.php 3 years ago class.wpcom-json-api-get-autosave-v1-1-endpoint.php 5 years ago class.wpcom-json-api-get-comment-counts-endpoint.php 4 years ago class.wpcom-json-api-get-comment-endpoint.php 4 years ago class.wpcom-json-api-get-comment-history-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-comments-tree-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-customcss.php 4 years ago class.wpcom-json-api-get-media-endpoint.php 4 years ago class.wpcom-json-api-get-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-media-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-post-counts-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-post-endpoint.php 4 years ago class.wpcom-json-api-get-post-v1-1-endpoint.php 4 years ago class.wpcom-json-api-get-site-endpoint.php 4 years ago class.wpcom-json-api-get-site-v1-2-endpoint.php 4 years ago class.wpcom-json-api-get-taxonomies-endpoint.php 4 years ago class.wpcom-json-api-get-taxonomy-endpoint.php 4 years ago class.wpcom-json-api-get-term-endpoint.php 4 years ago class.wpcom-json-api-list-comments-endpoint.php 5 years ago class.wpcom-json-api-list-embeds-endpoint.php 8 years ago class.wpcom-json-api-list-media-endpoint.php 8 years ago class.wpcom-json-api-list-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-list-media-v1-2-endpoint.php 8 years ago class.wpcom-json-api-list-post-type-taxonomies-endpoint.php 8 years ago class.wpcom-json-api-list-post-types-endpoint.php 5 years ago class.wpcom-json-api-list-posts-endpoint.php 5 years ago class.wpcom-json-api-list-posts-v1-1-endpoint.php 5 years ago class.wpcom-json-api-list-posts-v1-2-endpoint.php 5 years ago class.wpcom-json-api-list-roles-endpoint.php 5 years ago class.wpcom-json-api-list-shortcodes-endpoint.php 8 years ago class.wpcom-json-api-list-terms-endpoint.php 5 years ago class.wpcom-json-api-list-users-endpoint.php 4 years ago class.wpcom-json-api-menus-v1-1-endpoint.php 8 years ago class.wpcom-json-api-post-endpoint.php 4 years ago class.wpcom-json-api-post-v1-1-endpoint.php 4 years ago class.wpcom-json-api-render-embed-endpoint.php 6 years ago class.wpcom-json-api-render-embed-reversal-endpoint.php 8 years ago class.wpcom-json-api-render-endpoint.php 5 years ago class.wpcom-json-api-render-shortcode-endpoint.php 8 years ago class.wpcom-json-api-sharing-buttons-endpoint.php 8 years ago class.wpcom-json-api-site-settings-endpoint.php 4 years ago class.wpcom-json-api-site-settings-v1-2-endpoint.php 5 years ago class.wpcom-json-api-site-settings-v1-3-endpoint.php 5 years ago class.wpcom-json-api-site-settings-v1-4-endpoint.php 4 years ago class.wpcom-json-api-site-user-endpoint.php 8 years ago class.wpcom-json-api-taxonomy-endpoint.php 7 years ago class.wpcom-json-api-update-comment-endpoint.php 5 years ago class.wpcom-json-api-update-customcss.php 8 years ago class.wpcom-json-api-update-media-endpoint.php 8 years ago class.wpcom-json-api-update-media-v1-1-endpoint.php 4 years ago class.wpcom-json-api-update-post-endpoint.php 5 years ago class.wpcom-json-api-update-post-v1-1-endpoint.php 5 years ago class.wpcom-json-api-update-post-v1-2-endpoint.php 5 years ago class.wpcom-json-api-update-site-homepage-endpoint.php 5 years ago class.wpcom-json-api-update-site-logo-endpoint.php 4 years ago class.wpcom-json-api-update-taxonomy-endpoint.php 8 years ago class.wpcom-json-api-update-term-endpoint.php 7 years ago class.wpcom-json-api-update-user-endpoint.php 5 years ago class.wpcom-json-api-upload-media-endpoint.php 8 years ago class.wpcom-json-api-upload-media-v1-1-endpoint.php 4 years ago
class.wpcom-json-api-render-endpoint.php
150 lines
1 <?php
2
3 // these are helpers for the shortcode and embed render endpoints
4 abstract class WPCOM_JSON_API_Render_Endpoint extends WPCOM_JSON_API_Endpoint {
5
6 /*
7 * Figure out what scripts and styles to load.
8 * props to o2's o2_Read_API::poll() function for inspiration.
9 *
10 * In short we figure out what scripts load for a "normal" page load by executing wp_head and wp_footer
11 * then we render the embed/shortcode (to both get our result, and to have the shortcode files enqueue their resources)
12 * then we load wp_head and wp_footer again to see what new resources were added
13 * finally we find out the url to the source file and any extra info (like media or init js)
14 */
15 function process_render( $callback, $callback_arg ) {
16 global $wp_scripts, $wp_styles;
17
18 if ( false === defined( 'STYLESHEETPATH' ) ) {
19 wp_templating_constants();
20 }
21
22 // initial scripts & styles (to subtract)
23 ob_start();
24 wp_head();
25 wp_footer();
26 ob_end_clean();
27 $initial_scripts = $wp_scripts->done;
28 $initial_styles = $wp_styles->done;
29
30 // actually render the shortcode, get the result, and do the resource loading again so we can subtract..
31 ob_start();
32 wp_head();
33 ob_end_clean();
34 $result = call_user_func( $callback, $callback_arg );
35 ob_start();
36 wp_footer();
37 ob_end_clean();
38
39 // find the difference (the new resource files)
40 $loaded_scripts = array_diff( $wp_scripts->done, $initial_scripts );
41 $loaded_styles = array_diff( $wp_styles->done, $initial_styles );
42 return array(
43 'result' => $result,
44 'loaded_scripts' => $loaded_scripts,
45 'loaded_styles' => $loaded_styles,
46 );
47 }
48
49 /**
50 * Takes the list of styles and scripts and adds them to the JSON response
51 */
52 function add_assets( $return, $loaded_scripts, $loaded_styles ) {
53 global $wp_scripts, $wp_styles;
54 // scripts first, just cuz
55 if ( count( $loaded_scripts ) > 0 ) {
56 $scripts = array();
57 foreach ( $loaded_scripts as $handle ) {
58 if ( !isset( $wp_scripts->registered[ $handle ] ) )
59 continue;
60
61 $src = $wp_scripts->registered[ $handle ]->src;
62
63 // attach version and an extra query parameters
64 $ver = $this->get_version( $wp_scripts->registered[ $handle ]->ver, $wp_scripts->default_version );
65 if ( isset( $wp_scripts->args[ $handle ] ) ) {
66 $ver = $ver ? $ver . '&amp;' . $wp_scripts->args[$handle] : $wp_scripts->args[$handle];
67 }
68 $src = add_query_arg( 'ver', $ver, $src );
69
70 // add to an aray so we can return all this info
71 $scripts[ $handle ] = array(
72 'src' => $src,
73 );
74 $extra = $wp_scripts->print_extra_script( $handle, false );
75 if ( !empty( $extra ) ) {
76 $scripts[$handle]['extra'] = $extra;
77 }
78 }
79 $return['scripts'] = $scripts;
80 }
81 // now styles
82 if ( count( $loaded_styles ) > 0 ) {
83 $styles = array();
84 foreach ( $loaded_styles as $handle ) {
85 if ( !isset( $wp_styles->registered[ $handle ] ) )
86 continue;
87
88 $src = $wp_styles->registered[ $handle ]->src;
89
90 // attach version and an extra query parameters
91 $ver = $this->get_version( $wp_styles->registered[ $handle ]->ver, $wp_styles->default_version );
92 if ( isset( $wp_styles->args[ $handle ] ) ) {
93 $ver = $ver ? $ver . '&amp;' . $wp_styles->args[$handle] : $wp_styles->args[$handle];
94 }
95 $src = add_query_arg( 'ver', $ver, $src );
96
97 // is there a special media (print, screen, etc) for this? if not, default to 'all'
98 $media = 'all';
99 if ( isset( $wp_styles->registered[ $handle ]->args ) ) {
100 $media = esc_attr( $wp_styles->registered[ $handle ]->args );
101 }
102
103 // add to an array so we can return all this info
104 $styles[ $handle ] = array (
105 'src' => $src,
106 'media' => $media,
107 );
108 }
109
110 $return['styles'] = $styles;
111 }
112
113 return $return;
114 }
115
116 /**
117 * Returns the 'version' string set by the shortcode so different versions of scripts/styles can be loaded
118 */
119 function get_version( $this_scripts_version, $default_version ) {
120 if ( null === $this_scripts_version ) {
121 $ver = '';
122 } else {
123 $ver = $this_scripts_version ? $this_scripts_version : $default_version;
124 }
125 return $ver;
126 }
127
128 /**
129 * given a shortcode, process and return the result
130 */
131 function do_shortcode( $shortcode ) {
132 return do_shortcode( $shortcode );
133 }
134
135 /**
136 * given a one-line embed URL, process and return the result
137 */
138 function do_embed( $embed_url ) {
139 // in order for oEmbed to fire in the `$wp_embed->shortcode` method, we need to set a post as the current post
140 $_posts = get_posts( array( 'posts_per_page' => 1, 'suppress_filters' => false ) );
141 if ( ! empty( $_posts ) ) {
142 global $post;
143 $post = array_shift( $_posts );
144 }
145
146 global $wp_embed;
147 return $wp_embed->shortcode( array(), $embed_url );
148 }
149 }
150