-
-
Save viruthagiri/1761122 to your computer and use it in GitHub Desktop.
Some handy wordpress multisite functions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$posts = multisite_latest_post( array( | |
"how_many"=>10, | |
"how_long_days"=>30, | |
"how_many_words"=>50, | |
"more_text"=>"[...]", | |
"remove_html"=>true, | |
"sort_by"=>"post_date", | |
// if paginating: | |
"paginate"=>true, | |
"start"=>0, | |
"end"=>25, | |
// query based on meta values: (key / value) | |
"metas"=>array( | |
"tumblog"=>"articles", | |
) | |
)); | |
echo "There were ".$posts['total']." posts found"; | |
foreach($posts['posts'] as $item){ | |
?> | |
<li><a href="<?php echo $item->post_url; ?>">++ <?php echo $item->post_title; ?></a><span> <?php echo multisite_post_meta($item->blog_id,$item->ID,"tumblog"); ?></span></li> | |
<?php | |
} | |
function multisite_latest_post($args) { | |
global $wpdb; | |
extract($args); | |
// Validate | |
if( empty($how_many) ) $how_many = 10; | |
if( empty($how_long_days) ) $how_long_days = 30; | |
if( empty($how_many_words) ) $how_many_words = 50; | |
if( empty($more_text) ) $more_text = "[...]"; | |
if( empty($remove_html) ) $remove_html = true; | |
if( empty($post_type) ) $post_type = "video"; | |
if( empty($sort_by) ) $sort_by = "post_date"; | |
if( empty($paginate) ) $paginate = true; | |
if( empty($start) ) $start = 0; | |
if( empty($end) ) $end = 25; | |
if( !isset($metas) ) $metas = array(); | |
$query = "SELECT blog_id FROM $wpdb->blogs WHERE blog_id !='1'"; | |
$blogs = $wpdb->get_col($query); | |
if ($blogs) { | |
//we use blog id to loop post query | |
foreach ($blogs as $blog) { | |
$blogPostsTable = 'wp_'.$blog.'_posts'; | |
$blogPostMetaTable = 'wp_'.$blog.'_postmeta'; | |
$db_query = "SELECT sql_calc_found_rows $blogPostsTable.ID, | |
$blogPostsTable.post_author, | |
$blogPostsTable.post_title, | |
$blogPostsTable.guid, | |
$blogPostsTable.post_date, | |
$blogPostsTable.post_content, | |
$blogPostsTable.post_modified, | |
$blogPostsTable.comment_count | |
FROM $blogPostsTable"; | |
$i = 1; | |
if( count($metas) ){ | |
foreach($metas as $m){ | |
foreach($m as $mname=>$mval){ | |
$db_query .= " JOIN $blogPostMetaTable m{$i} ON m{$i}.post_id = $blogPostsTable.ID AND m{$i}.meta_key='{$mname}'"; | |
$i++; | |
} | |
} | |
reset($metas); | |
$db_query .= " WHERE $blogPostsTable.post_status = 'publish' AND $blogPostsTable.post_type = '".$post_type."'"; | |
$i = 1; | |
$mquery = array(); | |
foreach($metas as $m){ | |
foreach($m as $mname=>$mval){ | |
$mquery[] = " m{$i}.meta_value='{$mval}' "; | |
$i++; | |
} | |
} | |
if( count($mquery) ){ | |
$db_query .= " AND ( ".implode(" OR ",$mquery)." )"; | |
} | |
}else{ | |
$db_query .= " WHERE $blogPostsTable.post_status = 'publish' AND $blogPostsTable.post_type = '".$post_type."'"; | |
} | |
if( $paginate ){ | |
$db_query .= " LIMIT $start,$end"; | |
}else{ | |
$db_query .= " AND $blogPostsTable.post_date >= DATE_SUB(CURRENT_DATE(), INTERVAL $how_long_days DAY)"; | |
} | |
# echo $db_query."<br />"; | |
$thispos = $wpdb->get_results($db_query); | |
foreach($thispos as $thispost) { | |
if($sort_by == 'post_date') { | |
$order = $thispost->post_date; | |
} | |
else{ | |
$order = $thispost->post_modified; | |
} | |
$post_dates[] = $order; | |
$post_guids[$order] = $thispost->guid; | |
$blog_IDs[$order] = $blog; | |
$post_IDs[$order] = $thispost->ID; | |
$post_titles[$order] = $thispost->post_title; | |
$post_authors[$order] = $thispost->post_author; | |
$post_contents[$order] = $thispost->post_content; | |
$comments[$order] = $thispost->comment_count; | |
} | |
} | |
rsort($post_dates); | |
$union_results = array_unique($post_dates); | |
$ResultArray = array_slice($union_results, 0, $how_many); | |
foreach ($ResultArray as $date) { | |
$ID = $post_IDs[$date]; | |
$id_author = $post_authors[$date]; | |
$post_url = get_blog_permalink($blog_IDs[$date], $ID);/*$post_guids[$date];*/ | |
$post_title = $post_titles[$date]; | |
$post_content = $post_contents[$date]; | |
$post_date = mysql2date(get_option('date_format'), $date); | |
$post_time = mysql2date(get_option('time_format'), $date); | |
$total_comment = $comments[$date]; | |
$user_info = get_userdata($id_author); | |
$author_blog_url = get_blogaddress_by_id($user_info->primary_blog); | |
$author_url = $user_info->user_url; | |
$author_email = $user_info->user_email; | |
$blog_id = $blog_IDs[$date]; | |
if($user_info->first_name) { | |
$author_name = $user_info->first_name.' '.$user_info->last_name; | |
} | |
else{ | |
$author_name = $user_info->nickname; | |
} | |
if($remove_html) { | |
$post_content = multisite_cleanup_post($post_content); | |
} | |
$results = array(); | |
$results['ID'] = $ID; | |
$results['post_url'] = $post_url; | |
$results['post_title'] = $post_title; | |
$results['post_content'] = multisite_cut_article_by_words($post_content, $how_many_words); | |
$results['post_content'] .= $more_text; | |
$results['author_blog_url'] = $author_blog_url; | |
$results['author_url'] = $author_url; | |
$results['author_email'] = $author_email; | |
$results['author_name'] = $author_name; | |
$results['post_date'] = $post_date; | |
$results['post_time'] = $post_time; | |
$results['comment_count'] = $total_comment; | |
$results['blog_id'] = $blog_id; | |
$returns[] = $results; | |
} | |
$latest_posts = multisite_bind_array_to_object($returns); | |
$total = $wpdb->get_var("SELECT FOUND_ROWS() as total"); | |
return array("posts"=>$latest_posts,"total"=>$total); | |
} | |
} | |
function multisite_post_meta($blog, $post, $key){ | |
global $wpdb; | |
$blogPostsTable = 'wp_'.$blog.'_postmeta'; | |
$query = "SELECT meta_value FROM {$blogPostsTable} WHERE post_id ='{$post}' AND meta_key='{$key}'"; | |
$meta_value = $wpdb->get_var($query); | |
return $meta_value; | |
} | |
function get_blog_domain($blog_id){ | |
global $wpdb; | |
$query = "SELECT domain FROM $wpdb->blogs WHERE blog_id ='{$blog_id}'"; | |
$domain = $wpdb->get_var($query); | |
return $domain; | |
} | |
function multisite_bind_array_to_object($array) { | |
$return = new stdClass(); | |
foreach ($array as $k => $v) { | |
if (is_array($v)) { | |
$return->$k = multisite_bind_array_to_object($v); | |
} | |
else { | |
$return->$k = $v; | |
} | |
} | |
return $return; | |
} | |
function multisite_cut_article_by_words($original_text, $how_many) { | |
$word_cut = strtok($original_text," "); | |
$return = ''; | |
for ($i=1;$i<=$how_many;$i++) { | |
$return .= $word_cut; | |
$return .= (" "); | |
$word_cut = strtok(" "); | |
} | |
$return .= ''; | |
return $return; | |
} | |
function multisite_cleanup_post($source) { | |
$replace_all_html = strip_tags($source); | |
$bbc_tag = array('/\[caption(.*?)]\[\/caption\]/is'); | |
$result = preg_replace($bbc_tag, '', $replace_all_html); | |
return $result; | |
} | |
function multisite_get_option($blog_id,$key){ | |
switch_to_blog($blog_id); | |
$val = get_option($key); | |
restore_current_blog(); | |
return $val; | |
} | |
function multisite_get_thumb($postID, $w = 200, $h = 150, $blogID = 1, $link = true, $return = false) { | |
switch_to_blog($blogID); | |
$scriptpath = get_bloginfo('template_directory'); | |
if( $thumbnail = get_post_meta($postID, 'thumbnail', true) ){ | |
$iurl = '/wp-content/iptv/img/'.$thumbnail; | |
}else{ | |
$images = get_children(array('post_parent' => $postID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order')); | |
if ( $images ){ | |
$img = array_shift($images); | |
$imagelink = wp_get_attachment_image_src($img->ID,array($w,$h)); | |
$iurl = $imagelink[0]; | |
} | |
} | |
$out = ''; | |
if( $iurl ){ | |
$img = $iurl; | |
if( $link ) $out .= '<a href="'.get_permalink($postID).'" title="Permanent Link to '.get_the_title($postID).'">'; | |
$out .= '<img src="'.$img.'" width='.$w.' height='.$h.' />'; | |
if( $link ) $out .= '</a>'; | |
} | |
restore_current_blog(); | |
if($return) { | |
return $out; | |
} else { | |
echo $out; | |
} | |
} | |
function get_thumb($postID, $w = 200, $h = 150, $link = true, $return = false) { | |
$scriptpath = get_bloginfo('template_directory'); | |
if( $thumbnail = get_post_meta($postID, 'thumbnail', true) ){ | |
$iurl = '/wp-content/iptv/img/'.$thumbnail; | |
}else{ | |
$images = get_children(array('post_parent' => $postID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order')); | |
if ( $images ){ | |
$img = array_shift($images); | |
$imagelink = wp_get_attachment_image_src($img->ID,array($w,$h)); | |
$iurl = $imagelink[0]; | |
} | |
} | |
$out = ''; | |
if( $iurl ){ | |
$img = $iurl; | |
if( $link ) $out .= '<a href="'.get_permalink($postID).'" title="Permanent Link to '.get_the_title($postID).'">'; | |
$out .= '<img src="'.$img.'" width='.$w.' height='.$h.' />'; | |
if( $link ) $out .= '</a>'; | |
} | |
if($return) { | |
return $out; | |
} else { | |
echo $out; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment