رفتن به مطلب

نمایش آخرین مطالب وبلاگ ها همراه با تصویر شاخص بدون افزونه


پست های پیشنهاد شده

سلام

من افزونه Network Latest Posts رو نصب کردم و مدتی باهاش کار کردم اما ایراداتی داره که نمی تونم با قالب هماهنگش کنم.

آیا کدی هست که من بتونم آخرین مطالب وبلاگ ها رو با تصویر شاخص از وبلاگ ها بگیرم و در سایت اصلی نمایش بدم؟

لینک به ارسال

تست نشده

<?php

/**

* List recent posts across a Multisite network

*

* @uses get_blog_list(), get_blog_permalink()

*

* @param int $size The number of results to retrieve

* @param int $expires Seconds until the transient cache expires

* @return object Contains the blog_id, post_id, post_date and post_title

*/

function wp_recent_across_network( $size = 10, $expires = 7200 ) {

if( !is_multisite() ) return false;

// Cache the results with the WordPress Transients API

// Get any existing copy of our transient data

if ( ( $recent_across_network = get_site_transient( 'recent_across_network' ) ) === false ) {

// No transient found, regenerate the data and save a new transient

// Prepare the SQL query with $wpdb

global $wpdb;

$base_prefix = $wpdb->get_blog_prefix(0);

$base_prefix = str_replace( '1_', '' , $base_prefix );

// Because the get_blog_list() function is currently flagged as deprecated

// due to the potential for high consumption of resources, we'll use

// $wpdb to roll out our own SQL query instead. Because the query can be

// memory-intensive, we'll store the results using the Transients API

if ( false === ( $site_list = get_site_transient( 'multisite_site_list' ) ) ) {

global $wpdb;

$site_list = $wpdb->get_results( $wpdb->prepare('SELECT * FROM wp_blogs ORDER BY blog_id') );

set_site_transient( 'multisite_site_list', $site_list, $expires );

}

$limit = absint($size);

// Merge the wp_posts results from all Multisite websites into a single result with MySQL "UNION"

foreach ( $site_list as $site ) {

if( $site == $site_list[0] ) {

$posts_table = $base_prefix . "posts";

} else {

$posts_table = $base_prefix . $site->blog_id . "_posts";

}

$posts_table = esc_sql( $posts_table );

$blogs_table = esc_sql( $base_prefix . 'blogs' );

$query .= "(SELECT $posts_table.ID, $posts_table.post_title, $posts_table.post_date, $blogs_table.blog_id FROM $posts_table, $blogs_tablen";

$query .= "tWHERE $posts_table.post_type = 'post'n";

$query .= "tAND $posts_table.post_status = 'publish'n";

$query .= "tAND $blogs_table.blog_id = {$site->blog_id})n";

if( $site !== end($site_list) )

$query .= "UNIONn";

else

$query .= "ORDER BY post_date DESC LIMIT 0, $limit";

}

// Sanitize and run the query

$query = $wpdb->prepare($query);

$recent_across_network = $wpdb->get_results( $query );

// Set the Transients cache to expire every two hours

set_site_transient( 'recent_across_network', $recent_across_network, 60*60*2 );

}

// Format the HTML output

$html = '';

foreach ( $recent_across_network as $post ) {

$html .= 'blog_id, $post->ID ) . '">' . $post->post_title . '';

$html .= get_the_post_thumbnail($post->ID);

}

$html .= '';

return $html;

}

منبع:

http://www.smashingmagazine.com/2011/11/17/wordpress-multisite-practical-functions-methods/

لینک به ارسال
  • 3 هفته بعد...

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...