Hilfe zum Bearbeiten des Letzten Posts WordPress widget zur Anzeige in allen 3 Sprachen auf einmal
Site link: http://nuestrafrontera.org/wordpress/
Ich soll das Futter von der letzten post-Titel, um zu zeigen, in der Seitenleiste für alle 3 Sprachen, getrennt nach Sprache. So, zum Beispiel, unter den Letzten Posts in der sidebar hätte, "Englisch" und dann die letzten 3 Beiträge in Englisch, dann "Español" und die neuesten 3-in Spanisch und dann Französisch. Alle in eine Liste in die Spalte und erscheinen auf allen Seiten mit der Seitenleiste in allen Sprachen.
Ich verwende die aktuelle version von WordPress mit dem WPML plugin.
Glaube ich, dass die WordPress-widget für die Letzten Posts muss optimiert werden, dies zu tun. Hier ist der code (aus 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
}
}
Mit WPML, kann fast alles sein, definiert durch Sprache und für Dinge wie post/Seiten und Kategorien, die Sie können angeben, dass eine Kategorie ist die übersetzung von einem anderen in einer anderen Sprache.
InformationsquelleAutor CreativEliza | 2009-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht vertraut mit WPML plugin, aber wenn Sie eine Sprache haben spezifische Kategorien einteilen, können Sie einfach tun:
Indem Sie diesen code in deinem theme
sidebar.php
wirst du hoffentlich getan. Aber was, wenn Sie wollen, dass diese als widget? es gibt zwei Lösungen, die auf meinem Kopf:Erste Lösung: Wie Sie zuvor bereits in Ihrer Frage erwähnt-update, können Sie Gabel-Kern! & ändern Sie die standard-WordPress-recent-posts-widget. Hier gehen Sie durch den Austausch des originalen
widget()
Methode derWP_Widget_Recent_Posts
Klasse:Aber ich lieber nicht verwenden, eine solche Lösung, die änderung der Kern ist nicht eine gute Idee! Auch könnte dies eine schlechte Praxis wegen der Portabilität Gründen, während Sie schreiben können WordPress-widgets!
Die zweite, noch bessere Lösung! In deinem theme ist
functions.php
fügen Sie den folgenden code:Hoffe, es hilft 😉
posts
Tabelle und sehen, ob WPML verändert die Tabelle hinzufügen einer Sprache, die Feld-oder nichtIch bin kein Programmierer per se, sondern vielmehr Bastel ich an den code, bis es funktioniert. So, entschuldigt meine Unwissenheit, aber wo kann ich die posts-Tabelle?
Ich habe gerade Ihren Kommentar auf die Frage zu erwähnen, dass es die Sprache-spezifische Kategorien zur Verfügung, während mit WPML, So dass der beste Weg das zu tun, was Sie tun möchte, ist zu den oben stehenden code! ersetzen Sie die Kategorie slug mit Ihren Kategorie-slug einige Sprache & legen Sie es auf der Seitenleiste. durch die Art und Weise, die Sie kann finden Sie in der MySQL-Tabelle, in Strukturen mit Hilfe der cli, phpMyAdmin, Navicat Lite for MySQL, etc. bit.ly/3rAIx1
Auch hier ist die rub, wie Sie sagen. Die sidebar dynamisch erstellt in WordPress, so kann ich nicht einfach PHP-code in es. Das ist, warum ich bin versucht, einen Weg finden, zu optimieren das widget denn das ist Teil der dynamischen sidebar.
Gut, ich werde zu aktualisieren, die Antwort so schnell wie möglich 😉
InformationsquelleAutor sepehr