Widget "Poslední příspěvky" s náhledy


Kód je třeba vložit do souboru šablony functions.php Jen si dejte pozor, aby šablona náhledy podporovala. To by se vám nic nezobrazovalo. CSS kód si pak můžete upravit dle svých představ.

class WP_Widget_Posleni_prispevky extends WP_Widget {

function __construct() {
$widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "The most recent posts on your site") );
parent::__construct('recent-posts', 'Poslední příspěvky 2', $widget_ops);
$this->alt_option_name = 'widget_recent_entries';

add_action( 'save_post', array(&$this, 'flush_widget_cache') );
add_action( 'deleted_post', array(&$this, 'flush_widget_cache') );
add_action( 'switch_theme', array(&$this, 'flush_widget_cache') );
}

function widget($args, $instance) {
$cache = wp_cache_get('widget_recent_posts', 'widget');

if ( !is_array($cache) )
$cache = array();

if ( isset($cache[$args['widget_id']]) ) {
echo $cache[$args['widget_id']];
return;
}

ob_start();
extract($args);

$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Posts') : $instance['title'], $instance, $this->id_base);
if ( ! $number = absint( $instance['number'] ) )
$number = 1;

$r = new WP_Query(array('posts_per_page' => $number, 'no_found_rows' => true, 'post_status' => 'publish', 'ignore_sticky_posts' => true));
if ($r->have_posts()) :
?>
<?php echo $before_widget; ?>
<?php if ( $title ) echo $before_title . $title . $after_title; ?>
<ul>
<?php while ($r->have_posts()) : $r->the_post(); ?>
<li> <div style='float: left; margin-right: 10px'><?php if(has_post_thumbnail()) {the_post_thumbnail(array(150, 150));} ?></div>

<a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>">
<h3><?php the_title(); ?></h3> </a>
<p><?php the_excerpt(); ?></p>
<div style='clear: both'></div>
</li>
<?php endwhile; ?>
</ul>
<?php echo $after_widget; ?>
<?php
// Reset the global $the_post as this query will have stomped on it
wp_reset_postdata();

endif;

$cache[$args['widget_id']] = ob_get_flush();
wp_cache_set('widget_recent_posts', $cache, 'widget');
}}

add_action('widgets_init', create_function('', 'return register_widget("WP_Widget_Posleni_prispevky");'));