wp-admin/includes/theme.php:491$action is 'query_themes', 'theme_information', or 'feature_list', an object MUST be passed. If $action is 'hot_tags', an array should be passed. Finally, the third filter, 'themes_api_result', makes it possible to filter the response object or array, depending on the $action type. Supported arguments per action: <table> <thead> <tr> <th>Argument Name</th> <th style="text-align: center;">'query_themes'</th> <th style="text-align: center;">'theme_information'</th> <th style="text-align: center;">'hot_tags'</th> <th style="text-align: center;">'feature_list'</th> </tr> </thead> <tbody> <tr> <td>$slug</td> <td style="text-align: center;">No</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$per_page</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$page</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$number</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$search</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$tag</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$author</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$user</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$browse</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$locale</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> <tr> <td>$fields</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">Yes</td> <td style="text-align: center;">No</td> <td style="text-align: center;">No</td> </tr> </tbody> </table>$actionstring$argsarray|objectoptionalarray()$slugstringdefault: empty
$per_pageintdefault: 24
$pageintdefault: 1
$numberint
$searchstringdefault: empty
$tagstringdefault: empty
$authorstringdefault: empty
$userstringdefault: empty
$browsestring
$localestringdefault: is the value of get_locale()
$fieldsarray
$descriptionbooldefault: false
$sectionsbooldefault: false
$ratingbooldefault: false
$ratingsbooldefault: false
$downloadedbooldefault: false
$downloadlinkbooldefault: false
$last_updatedbooldefault: false
$tagsbooldefault: false
$homepagebooldefault: false
$screenshotsbooldefault: false
$screenshot_countintdefault: 1
$screenshot_urlbooldefault: false
$photon_screenshotsbooldefault: false
$templatebooldefault: false
$parentbooldefault: false
$versionsbooldefault: false
$theme_urlbooldefault: false
$extended_authorbooldefault: false. }
object|array|WP_Error$action.3 hooks fire while themes_api() runs, in this order:
Filters arguments used to query for installer pages from the WordPress.org Themes API.
Filters whether to override the WordPress.org Themes API.
Filters the returned WordPress.org Themes API response.
function themes_api( $action, $args = array() ) { if ( is_array( $args ) ) { $args = (object) $args; } if ( 'query_themes' === $action ) { if ( ! isset( $args->per_page ) ) { $args->per_page = 24; } } if ( ! isset( $args->locale ) ) { $args->locale = get_user_locale(); } if ( ! isset( $args->wp_version ) ) { $args->wp_version = substr( wp_get_wp_version(), 0, 3 ); // x.y } /** * Filters arguments used to query for installer pages from the WordPress.org Themes API. * * Important: An object MUST be returned to this filter. * * @since 2.8.0 * * @param object $args Arguments used to query for installer pages from the WordPress.org Themes API. * @param string $action Requested action. Likely values are 'theme_information', * 'feature_list', or 'query_themes'. */ $args = apply_filters( 'themes_api_args', $args, $action ); /** * Filters whether to override the WordPress.org Themes API. * * Returning a non-false value will effectively short-circuit the WordPress.org API request. * * If `$action` is 'query_themes', 'theme_information', or 'feature_list', an object MUST * be passed. If `$action` is 'hot_tags', an array should be passed. * * @since 2.8.0 * * @param false|object|array $override Whether to override the WordPress.org Themes API. Default false. * @param string $action Requested action. Likely values are 'theme_information', * 'feature_list', or 'query_themes'. * @param object $args Arguments used to query for installer pages from the Themes API. */ $res = apply_filters( 'themes_api', false, $action, $args ); if ( ! $res ) { $url = 'http://api.wordpress.org/themes/info/1.2/'; $url = add_query_arg( array( 'action' => $action, 'request' => $args, ), $url ); $http_url = $url; $ssl = wp_http_supports( array( 'ssl' ) ); if ( $ssl ) { $url = set_url_scheme( $url, 'https' ); } $http_args = array( 'timeout' => 15, 'user-agent' => 'WordPress/' . wp_get_wp_version() . '; ' . home_url( '/' ), ); $request = wp_remote_get( $url, $http_args ); if ( $ssl && is_wp_error( $request ) ) { if ( ! wp_doing_ajax() ) { wp_trigger_error( __FUNCTION__, sprintf( /* translators: %s: Support forums URL. */ __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the <a href="%s">support forums</a>.' ), __( 'https://wordpress.org/support/forums/' ) ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ),Introduced in 2.8.0. Unchanged from 6.7.7 through 7.1.0.
Signature, return type and hooks compared across 5 parsed releases.
src/wp-admin/includes/theme.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.