php Топкомментаторовспобедителями

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Топкомментаторовспобедителями相关的知识,希望对你有一定的参考价值。

function sp_top_commentator_winners(){
    global $wpdb;
    $length = 0;        // Максимальная длинна имени в символах, если стоит 0, то имя не обрезается
    $month = true;     // true - за текущий месяц, false - за все время
    $comment = true;    // показывать количество комментариев
    $nofollow = true;   // ссылки nofollow
    $count = 8;        // количество комментаторов
    $col = 4;       // количество колонок
    $avatarSize = 85;   // размер аватара
    $exceptionEmail = 'sneginka-anna@mail.ru, sneginka.anna@gmail.com'; // мыла-исключения
    $lengthMin = 10;    // минимальное количество символов в учитываемом комментарии

    $showWinners = true;    // показывать победителей
    $countWinners = 3;  // количество победителей
    $showDays = 28;      // количество дней, которое показываются победители
    $separator = '<hr style="display:block;margin-bottom:5px"><div class="win_mothers">Победители прошлого месяца!</div>'; // разделитель ТОПа и победителей
	$results = get_transient( 'sp_top_commentator' );
	if ( false === $results ) {
    $results = $wpdb->get_results('
        SELECT
            COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
        FROM
            (select * from '.$wpdb->comments.' where CHAR_LENGTH(comment_content) > '. $lengthMin .' order by comment_ID desc) as pc
        WHERE
            comment_author_email != "" AND
            comment_type = "" AND
            comment_approved = 1 AND
            comment_author_email NOT IN ('.preg_replace('/([\w\d\.\-_]+@[\w\d\.\-_]+)(,? ?)/','"\\1"\\2',$exceptionEmail).')'.
            ($month ? 'AND month(comment_date) = month(now()) and year(comment_date) = year(now())' : '').
        'GROUP BY
            comment_author_email
        ORDER BY
            comments_count DESC,
            comment_ID ASC
        LIMIT '.$count
    );
	
		set_transient( 'sp_top_commentator', $results, DAY_IN_SECONDS );
	}
    $firstIteration = true; // отвечает за то чтобы было всего две итерации
    do {
        $output = '<div class="top-comment">';
        $i = 1;
        foreach($results as $result){
            
			if ($i%$col == 0) {$one_col_last = 'last';} else {$one_col_last = '';} $i++;
            $output .= '<div class="one-top-coment '. $one_col_last.'"><div class="avatar-top">'.get_avatar($result->comment_author_email,$avatarSize).'</div><div class="avatar-comment">';
            if ($length and $length<mb_strlen($result->comment_author)) $result->comment_author = trim(mb_substr($result->comment_author, 0, $length)).'.';
            if ($result->comment_author_url) {
			$url = $result->comment_author_url;
			$output .= '<a class="link-commentators" target="_blank" data-url="'.$url.'">'.$result->comment_author.'</a>';
			
				} else {
					$output .= $result->comment_author;
				}

            if ($comment) $output .= '<sub>'.$result->comments_count.'</sub>';
            $output .= '<div style="clear:both;"></div></div></div>';
        }
        
        $output .= '</div>';
        echo $output;
        
        if ($showWinners and date('j') <= $showDays and $firstIteration) {
	        $results = get_transient( 'special_query_results_winners' );
	        if ( false === $results ) {
            $results = $wpdb->get_results('
                SELECT
                    COUNT(comment_author_email) AS comments_count, comment_author_email, comment_author, comment_author_url
                FROM
                    (select * from '.$wpdb->comments.' where CHAR_LENGTH(comment_content) > '. $lengthMin .' order by comment_ID desc) as pc
                WHERE
                    comment_author_email != "" AND
                    comment_type = "" AND
                    comment_approved = 1 AND
                    comment_author_email NOT IN ('.preg_replace('/([\w\d\.\-_]+@[\w\d\.\-_]+)(,? ?)/','"\\1"\\2',$exceptionEmail).') AND
                    comment_date > LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 2 MONTH)) AND 
                    comment_date < DATE_ADD(LAST_DAY(CURDATE() - INTERVAL 1 MONTH), INTERVAL 1 DAY)
                GROUP BY
                    comment_author_email
                ORDER BY
                    comments_count DESC,
                    comment_ID ASC
                LIMIT '.$countWinners
            );
		        set_transient( 'special_query_results_winners', $results , WEEK_IN_SECONDS);
	        }
            echo $separator;
            $firstIteration = false;
        } else {
            $showWinners = false;
        }
    } while($showWinners);
}

以上是关于php Топкомментаторовспобедителями的主要内容,如果未能解决你的问题,请参考以下文章

php 帖子Поискпонесколькимкастомфлдамвыгребаетпостыопределенноготипаитаксономиисопределеннымикастомфилд

html Примерныйспособмикроразметкиконтактов

css Когдатекстразбиваетсянаколонки,тобраузерпытаетсяравномернораспределитьсодержимоеблокапоуказанном

php Отправкаписьмапридобавленииэлементаинфоблока

php 自定义数据库查询кастомныйзапроскбазе,выбратьвсепостысразнымзначениемкастомфилда

php Определяемисоздаемнабориликомплектутовара