Skip to content

Instantly share code, notes, and snippets.

@staylor
Created June 4, 2012 19:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save staylor/2870415 to your computer and use it in GitHub Desktop.
Save staylor/2870415 to your computer and use it in GitHub Desktop.
wp_ajax_autocomplete_site
<?php
function wp_ajax_autocomplete_site() {
if ( ! is_multisite() || ! current_user_can( 'manage_sites' ) || wp_is_large_network( 'sites' ) )
wp_die( -1 );
$return = array();
global $wpdb;
$value = stripslashes( $_REQUEST['term'] );
$terms = explode( '/', $value );
$like_sql = "( domain LIKE %s OR path LIKE %s )";
$likes = array();
$like_escaped_terms = array();
$join = ' OR ';
foreach ( $terms as $term ) {
if ( !empty( $likes ) )
$join = ' AND ';
$escaped = '%' . like_escape( $term ) . '%';
$like_escaped_terms[] = $escaped;
$like_escaped_terms[] = $escaped;
array_push( $likes, $like_sql );
}
$select = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE ( " . join( $join, $likes ) . " ) AND public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' ORDER BY registered DESC";
array_unshift( $like_escaped_terms, $select );
$sql = call_user_func_array( array( $wpdb, 'prepare' ), $like_escaped_terms );
$sites = $wpdb->get_results( $sql, ARRAY_A );
if ( empty( $sites ) )
wp_die( -1 );
foreach ( (array) $sites as $details ) {
$blogname = get_blog_option( $details['blog_id'], 'blogname' );
$return[] = array(
'label' => sprintf( '%1$s (%2$s)', $blogname, $details['domain'] . $details['path'] ),
'value' => $details['domain'] . $details['path']
);
}
wp_die( json_encode( $return ) );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment