Site: http://nuestrafrontera.org/wordpress/Trợ giúp để chỉnh sửa widget Recent Posts Wordpress để diplay ở cả 3 ngôn ngữ cùng một lúc
Tôi muốn các thức ăn của tiêu đề bài viết gần đây để hiển thị trong thanh bên cho tất cả 3 ngôn ngữ, cách nhau bằng ngôn ngữ. Vì vậy, ví dụ, dưới bài viết gần đây, thanh bên sẽ có "tiếng Anh" và sau đó là 3 bài viết mới nhất bằng tiếng Anh, sau đó là "Español" và 3 bài mới nhất bằng tiếng Tây Ban Nha và sau đó là tiếng Pháp. Tất cả trong một danh sách trong cột và xuất hiện trên tất cả các trang với thanh bên trong tất cả các ngôn ngữ.
Tôi đang sử dụng phiên bản Wordpress mới nhất với plugin WPML.
Tôi tin rằng tiện ích Wordpress cho Bài đăng gần đây cần phải được tinh chỉnh để thực hiện việc này. Đây là mã (từ 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
}
}
Liệu các ngôn ngữ khác nhau như theo dõi loại? Tôi không quen với WPML ... –
Với WPML, hầu hết mọi thứ có thể được định nghĩa bằng ngôn ngữ và cho những thứ như bài/trang và danh mục, bạn có thể chỉ ra rằng một thể loại là bản dịch của một ngôn ngữ khác bằng một ngôn ngữ khác. – CreativEliza