sito: http://nuestrafrontera.org/wordpress/Aiuto per modificare il widget Messaggi recenti Wordpress per diplay in tutte le 3 lingue in una sola volta
voglio il feed dei recenti titoli dei post per mostrare nella barra laterale per tutti i 3 lingue, separati per lingua. Così, per esempio, sotto Messaggi recenti la barra laterale avrebbe "inglese" e poi gli ultimi 3 post in inglese, poi "Español" e gli ultimi 3 in spagnolo e poi in francese. Tutto in un elenco nella colonna e visualizzato su tutte le pagine con la barra laterale in tutte le lingue.
Sto usando la versione più recente di Wordpress con il plugin WPML.
Credo che il widget di Wordpress per i post recenti debba essere ottimizzato per fare ciò. Ecco il codice (da wp-includes/default-widgets.php):
class WP_Widget_Recent_Posts extends WP_Widget {
function WP_Widget_Recent_Posts() {
$widget_ops = array('classname' => 'widget_recent_entries', 'description' => __("The most recent posts on your blog"));
$this->WP_Widget('recent-posts', __('Recent Posts'), $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']);
if (!$number = (int) $instance['number'])
$number = 10;
else if ($number < 1)
$number = 1;
else if ($number > 15)
$number = 15;
$r = new WP_Query(array('showposts' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1));
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><a href="<?php the_permalink() ?>" title="<?php echo esc_attr(get_the_title() ? get_the_title() : get_the_ID()); ?>"><?php if (get_the_title()) the_title(); else the_ID(); ?> </a></li>
<?php endwhile; ?>
</ul>
<?php echo $after_widget; ?>
<?php
wp_reset_query(); // Restore global post data stomped by the_post().
endif;
$cache[$args['widget_id']] = ob_get_flush();
wp_cache_add('widget_recent_posts', $cache, 'widget');
}
function update($new_instance, $old_instance) {
$instance = $old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['number'] = (int) $new_instance['number'];
$this->flush_widget_cache();
$alloptions = wp_cache_get('alloptions', 'options');
if (isset($alloptions['widget_recent_entries']))
delete_option('widget_recent_entries');
return $instance;
}
function flush_widget_cache() {
wp_cache_delete('widget_recent_posts', 'widget');
}
function form($instance) {
$title = esc_attr($instance['title']);
if (!$number = (int) $instance['number'])
$number = 5;
?>
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
<p><label for="<?php echo $this->get_field_id('number'); ?>"><?php _e('Number of posts to show:'); ?></label>
<input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" size="3" /><br />
<small><?php _e('(at most 15)'); ?></small></p>
<?php
}
}
sono le diverse lingue tracciati come categorie? Non ho familiarità con WPML ... –
Con WPML, quasi tutto può essere definito dalla lingua e per cose come post/pagine e categorie, è possibile indicare che una categoria è la traduzione di un'altra in una lingua diversa. – CreativEliza