Visualizzazione risultati 1 fino 8 di 8

Discussione: [Wordpress] Visualizzare i commenti nel widget commenti recenti

  1. #1
    Guest

    Predefinito [Wordpress] Visualizzare i commenti nel widget commenti recenti

    Salve a tutti ragazzi, ho un problema, sto realizzando il tema per il mio blog, io ho un'altersito con installato wordpress. Come ben sapete c'è il widget dei commenti recenti, il problema è che questo widget visualizza solo il nome di chi ha lasciato il commento ed il titolo dell'articolo, una cosa del genere:

    "melapp su Ciao"

    io invece vorrei che si vedesse così

    "melapp su Ciao: Testo del commento lasciato da melapp"

    So che si deve modificare qualche cosa nel files default_widgets.php ma non sono molto esperto in php.

    Vi lascio anche il pezzo di codice che ho individuato, dipende tutto da lui.

    Codice HTML:
    class WP_Widget_Recent_Comments extends WP_Widget {
    
    	function WP_Widget_Recent_Comments() {
    		$widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'The most recent comments' ) );
    		$this->WP_Widget('recent-comments', __('Recent Comments'), $widget_ops);
    		$this->alt_option_name = 'widget_recent_comments';
    
    		if ( is_active_widget(false, false, $this->id_base) )
    			add_action( 'wp_head', array(&$this, 'recent_comments_style') );
    
    		add_action( 'comment_post', array(&$this, 'flush_widget_cache') );
    		add_action( 'transition_comment_status', array(&$this, 'flush_widget_cache') );
    	}
    
    	function recent_comments_style() { ?>
    	<style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
    <?php
    	}
    
    	function flush_widget_cache() {
    		wp_cache_delete('widget_recent_comments', 'widget');
    	}
    
    	function widget( $args, $instance ) {
    		global $comments, $comment;
    
    		$cache = wp_cache_get('widget_recent_comments', 'widget');
    
    		if ( ! is_array( $cache ) )
    			$cache = array();
    
    		if ( isset( $cache[$args['widget_id']] ) ) {
    			echo $cache[$args['widget_id']];
    			return;
    		}
    
     		extract($args, EXTR_SKIP);
     		$output = '';
     		$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Comments') : $instance['title']);
    
    		if ( ! $number = (int) $instance['number'] )
     			$number = 5;
     		else if ( $number < 1 )
     			$number = 1;
    
    		$comments = get_comments( array( 'number' => $number, 'status' => 'approve' ) );
    		$output .= $before_widget;
    		if ( $title )
    			$output .= $before_title . $title . $after_title;
    
    		$output .= '<ul id="recentcomments">';
    		if ( $comments ) {
    			foreach ( (array) $comments as $comment) {
    				$output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s: ', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
    			}
     		}
    		$output .= '</ul>';
    		$output .= $after_widget;
    
    		echo $output;
    		$cache[$args['widget_id']] = $output;
    		wp_cache_set('widget_recent_comments', $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_comments']) )
    			delete_option('widget_recent_comments');
    
    		return $instance;
    	}
    
    	function form( $instance ) {
    		$title = isset($instance['title']) ? esc_attr($instance['title']) : '';
    		$number = isset($instance['number']) ? absint($instance['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 comments 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" /></p>
    <?php
    	}
    }
    Spero possiate aiutarmi...

  2. #2
    Guest

    Predefinito

    Nel codice
    Codice:
    if ( $comments ) {
    			foreach ( (array) $comments as $comment) {
    				$output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s: ', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
    			}
     		}
    Puoi aggiungere get_comment_text($comment->comment_ID) per stampare il testo del commento. Però non te lo consiglio, perché se vengono scritti commenti molto lunghi rischi che ti venga fuori una sidebar chilometrica. Dovresti limitare il numero di parole/caratteri, un po'come fa the_excerpt per il contenuto del post.
    Ultima modifica di niccolotapparo : 18-11-2010 alle ore 15.45.42

  3. #3
    Guest

    Predefinito

    niccolotapparo ti ringrazio, ma non sono molto pratico in questo campo. Potresti indicarmi come fare ad impostare un limite nei caratteri?

  4. #4
    Guest

    Predefinito

    ho controllato la documentazione di WP e siamo fortunati, c'è la funzione comment_excerpt(). Quindi puoi richiamare get_comment_excerpt($comment->comment_ID).

  5. #5
    Guest

    Predefinito

    Ti ringrazio tantissimo :) funziona perfettamente :)

    EDIT: Allora di funzionare funziona perfettamente, però mi fa vedere tutto il commento e non lo taglia…. come si può fare?
    Ultima modifica di melapp : 18-11-2010 alle ore 17.18.06

  6. #6
    Guest

    Predefinito

    get_comment_excerpt ti fa vedere l'intero commento? nella documentazione c'è scritto
    Codice:
    Displays an excerpt (maximum of 20 words) of a comment's text.
    Visualizzi più di 20 parole?

  7. #7
    Guest

    Predefinito

    Infatti ho letto anch'io la documentazione… cmq si visualizzo il commento chilometrico che ho fatto per prova, e sono + di 100 parole e le visualizza tutte...

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da niccolotapparo Visualizza messaggio
    Nel codice
    Codice:
    if ( $comments ) {
    			foreach ( (array) $comments as $comment) {
    				$output .=  '<li class="recentcomments">' . /* translators: comments widget: 1: comment author, 2: post link */ sprintf(_x('%1$s on %2$s: ', 'widgets'), get_comment_author_link(), '<a href="' . esc_url( get_comment_link($comment->comment_ID) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>') . '</li>';
    			}
     		}
    Puoi aggiungere get_comment_text($comment->comment_ID) per stampare il testo del commento. Però non te lo consiglio, perché se vengono scritti commenti molto lunghi rischi che ti venga fuori una sidebar chilometrica. Dovresti limitare il numero di parole/caratteri, un po'come fa the_excerpt per il contenuto del post.
    Ciao Buongiorno
    grazie al tuo aiuto ho risolto anche io questo piccolo problema ma non riesco a inserire uno spazio. Ti faccio un esempio citando quello del post:
    "melapp su CiaoLorem ipsum dolor sit amet, consectetur adipiscing elit "

    invece gradirei:
    "melapp su Ciao: Lorem ipsum dolor sit amet, consectetur adipiscing elit "

    come posso fare? Grazie mille

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •