Помогите с функцией на PHP

(Ответов: 3, Просмотров: 627)
  1. Новичок
    • Регистрация: 10.09.2011
    • Сообщений: 11
    • Репутация: 0
    Привет, есть сайт на wordpress. Есть функция вывода последних комментариев. Тут можно исключать вывод комментариев из определенных категорий. Можно ли изменить функцию так, чтобы запрещать вывод комментариев из определенных постов по post_id?

    PHP код:
    function page_comments($limit=10$ex=45$cat=0$echo=1$gravatar=''){
     global 
    $wpdb;
        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 comment_ID, comment_post_ID, comment_content, post_title, guid, comment_author, comment_author_email
        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 '<div id="comments"><ol class="commentlist">';
     foreach (
    $results as $comment){
     if(
    $gravatar$grava get_avatar$comment50 );
     
    $comtext strip_tags($comment->comment_content);
     
    $leight = (int) iconv_strlen$comtext'utf-8' );
     if(
    $leight $ex$comtext =  iconv_substr($comtext,0,$ex'UTF-8').' …';
     if(
    strip_tags($comment->comment_author) == 'Артем Петрусенко'){
     
    $autor " <cite style='color:red;' class='fn'> ".strip_tags($comment->comment_author)."</cite> ответил на вопрос в статье";
     }else{
     
    $autor " <cite class='fn'>".strip_tags($comment->comment_author)."</cite>  оставил(а) отзыв на товар";
     }
     
    $out .= "
     <li class='comment'>
     <div  class='comment-body'>
     
    $grava
     <div class='comment-wrapper'>
     <div class='comment-meta' style='margin-bottom:5px;'>
     
    $autor <a style='font-size:14px;line-height: 0.5;' href='"get_comment_link($comment->comment_ID) ."'>{$comment->post_title}</a>
     </div>
     <div class='hentry-content'>
     
    {$comtext}
     </div>
     </div>
     </div>
     </li>
     "
    ;
     } 
    $out .= "</ol></div>";
     
    if (
    $echo) echo $out;
     else return 
    $out;
     }
    ?> 
    • 0
  2. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    соррри, не так прочитал сначала
    PHP код:
    function page_comments($limit=10$ex=45$cat=0$echo=1$gravatar=''б $ids false){
     global 
    $wpdb;
    $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";
        }
    if(
    $ids){
      
    $and .= "AND p.ID NOT IN (".join(",",$ids).")";
    }
        
    $sql "SELECT comment_ID, comment_post_ID, comment_content, post_title, guid, comment_author, comment_author_email
        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"
    вот как-то так, ну и проверку на входные данные надо.
    Последний раз редактировалось Весёлый химик; 28.08.2014 в 20:27.
    • 0
  3. Студент
    • Регистрация: 29.01.2011
    • Сообщений: 32
    • Репутация: 11
    Да, это будет работать, только есть небольшая синтаксическая ошибка. Вместо б нужна запятая в заголовке т.е.:
    PHP код:
    function page_comments($limit=10$ex=45$cat=0$echo=1$gravatar=''$ids false){ 
    • 0
  4. Дипломник
    • Регистрация: 29.11.2009
    • Сообщений: 131
    • Репутация: 32
    пардон, да. Раскладку забыл переключить и потом не увидел, что б вместо запятой написал.
    • 0

Похожие темы

Темы Раздел Ответов Последний пост
Наушники с функцией полной изоляции от окружения
Оффтоп и свободные темы 3 24.11.2013 22:47
Какой видеохостинг с оплатой за просмотр лучше?или скриптдля проигрования видео с функцией реклама.?
Софт, скрипты, сервисы 0 07.10.2012 05:03

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры