• Здравствуйте. Пытался через поиск найти, но не удалось отыскать именно то, что нужно.

    Задача в следующем:
    «Помогите пожалуйста вывести комментарии открытой рубрики.»

    Очень важно! Заранее большое спасибо!

Просмотр 3 ответов — с 1 по 3 (всего 3)
  • Версия WordPress — последняя.

    В общем, нужен код, который я буду вставлять в любое место шаблона и он будет выводить комментарии открытой рубрики (имя, аватар, сообщение и ссылка на этот комментарий), если открыта иная страница — ничего не выводить

    Насколько сложно это реализовать?

    В общем, сделал вот так:

    function kama_recent_comments_from_current_cat( $limit=10, $ex=45, $gravatar=0 ){
    	global $post, $cat, $wpdb;
    
    	$limit = (int) $limit;
    	$ex    = (int) $ex;
    
    	// для дочерних рубрик
    	if( $cat && $child_terms = get_categories( array('child_of' => $cat) ) )
    		foreach( $child_terms as $term )
    			$cat .= ','. $term->term_id;
    
    	// для постов
    	if( !$cat && is_singular() && $terms = get_the_category( $post->ID ) )
    		foreach( $terms as $term )
    			$cat .= $term->term_id . ',';
    
    	$cat = rtrim($cat, ',');
    
    	$JOIN = $AND = '';
    	if( $cat ){
    		$IN   = (strpos($cat,'-')===false) ? "IN ($cat)" : "NOT IN (". str_replace('-', '', $cat) .")";
    		$JOIN = "LEFT JOIN $wpdb->term_relationships rel ON (p.ID = rel.object_id) LEFT JOIN $wpdb->term_taxonomy tax ON (rel.term_taxonomy_id = tax.term_taxonomy_id)";
    		$AND  = "AND tax.taxonomy = 'category' AND tax.term_id $IN";
    	}
    
    	$sql = "SELECT * FROM $wpdb->comments com
    	LEFT JOIN $wpdb->posts p ON (com.comment_post_ID = p.ID) $JOIN
    	WHERE comment_approved = '1' AND comment_type = '' $AND
    	ORDER BY comment_date DESC LIMIT $limit"; 
    
    	$results = $wpdb->get_results( $sql );
    
    	$out = $grava = '';
    	foreach( $results as $comm ){
    		if( $gravatar )
    			$grava = get_avatar( $comm->comment_author_email, $gravatar );
    
    		$comtext = strip_tags( $comm->comment_content );
    		$leight = (int) mb_strlen( $comtext );
    		if( $leight > $ex )
    			$comtext = mb_substr( $comtext, 0, $ex ) .'…';
    
    		$out .= '
    		<li>
    			'. $grava .'<b>'. strip_tags($comm->comment_author) .':</b>
    			<a href="'. get_comment_link($comm->comment_ID) .'" title="к записи: '. esc_attr($comm->post_title) .'">'. $comtext .'</a>
    		</li>';
    	}
    
    	return $out;
    }

    Может кому пригодится

Просмотр 3 ответов — с 1 по 3 (всего 3)

Тема «Комментарии текущей рубрики» закрыта для новых ответов.