[Помогите] Перестала работать конструкция вывода последних комментов на WP3

Тема в разделе "Wordpress", создана пользователем b2farm, 28 июн 2010.

Статус темы:
Закрыта.
Модераторы: Sorcus
  1. b2farm

    b2farm

    Регистр.:
    17 фев 2008
    Сообщения:
    498
    Симпатии:
    197
    Есть функция в шаблоне, отвечающая за вывод последних комментов по заданному шаблону:
    PHP:
    function u_get_recent_comments($no_comments 5$before '<li>'$after '</li>'$show_pass_post false) {

        global 
    $wpdb$tablecomments$tableposts;
        
    $request "SELECT ID, comment_ID, comment_content, comment_author FROM $tableposts$tablecomments WHERE $tableposts.ID=$tablecomments.comment_post_ID AND (post_status = 'publish' OR post_status = 'static')";

    if(!
    $show_pass_post) { $request .= "AND post_password ='' "; }

        
    $request .= "AND comment_approved = '1' ORDER BY $tablecomments.comment_date DESC LIMIT 

    $no_comments";
        
    $comments $wpdb->get_results($request);
        
    $output '';
        foreach (
    $comments as $comment) {
           
    $comment_author stripslashes($comment->comment_author);
           
    $comment_content strip_tags($comment->comment_content);
           
    $comment_content stripslashes($comment_content);
           
    $comment_excerpt =substr($comment_content,0,50);
           
    $comment_excerpt u_utf8_trim($comment_excerpt);
           
    $permalink get_permalink($comment->ID)."#comment-".$comment->comment_ID;
           
    $output .= $before '<a href="' $permalink '" title="View the entire comment by ' $comment_author '"><strong>' $comment_author '</strong>: ' $comment_excerpt '...</a>' $after;
           }
           echo 
    $output;
    }
    которая выводится в нужном месте конструкцией
    PHP:
    <?php  u_get_recent_comments(6);      ?>
    после обновления до версии 3.0 функция ничерта не выводит, просто пустое место без всяких ошибок. структура таблиц в свежей версии вроде не менялась, в чем же тогда может быть косячок?
     
  2. xbreaker

    xbreaker Вверх ногами

    Регистр.:
    15 авг 2007
    Сообщения:
    245
    Симпатии:
    52
    могу лишь посоветовать добавить вот такой простой код записи ошибок в лог и посмотреть в чем причина:
    PHP:
    define('ERROR_LOG'$_SERVER['DOCUMENT_ROOT'].'/error.log');
    set_error_handler('error_handler');

    function 
    error_handler($errno$error$file$line)
    {
    if (
    error_reporting() == 0) {return;}
    if (
    $errno == E_WARNING ) {
    $dt date('Y-m-d H:i:s');
    $message "[$dt][WARNING][$errno][$error][$file:$line]\n";
    error_log($message3''.ERROR_LOG.'');
    } elseif (
    $errno == E_NOTICE ) {
    $dt date('Y-m-d H:i:s');
    $message "[$dt][NOTICE][$errno][$error][$file:$line]\n";
    error_log($message3''.ERROR_LOG.'');
    } elseif (
    $errno == E_USER_ERROR || $errno == E_USER_WARNING || $errno == E_USER_NOTICE) {
    $dt date('Y-m-d H:i:s');
    $user_ip get_ip();
    $message "[$dt][$user_ip][ERROR][$errno][$error][$file:$line]\n";
    error_log($message3''.ERROR_LOG.'');
    }

    }
     
  3. b2farm

    b2farm

    Регистр.:
    17 фев 2008
    Сообщения:
    498
    Симпатии:
    197
    либо ошибок нет, либо лог не создается :ah:
     
  4. xbreaker

    xbreaker Вверх ногами

    Регистр.:
    15 авг 2007
    Сообщения:
    245
    Симпатии:
    52
    в корне сайта надеюсь ищите error.log?
     
  5. b2farm

    b2farm

    Регистр.:
    17 фев 2008
    Сообщения:
    498
    Симпатии:
    197
    да, права на запись стоят адекватные.
     
  6. Conwell

    Conwell

    Регистр.:
    23 мар 2009
    Сообщения:
    337
    Симпатии:
    177
    Замени вот эти строчки:
    PHP:
    global $wpdb$tablecomments$tableposts;
        
    $request "SELECT ID, comment_ID, comment_content, comment_author FROM $tableposts$tablecomments WHERE $tableposts.ID=$tablecomments.comment_post_ID AND (post_status = 'publish' OR post_status = 'static')";

    if(!
    $show_pass_post) { $request .= "AND post_password ='' "; }

        
    $request .= "AND comment_approved = '1' ORDER BY $tablecomments.comment_date DESC LIMIT 

    $no_comments"
    на вот эти:
    PHP:
      global $wpdb;
        
    $request "SELECT ID, comment_ID, comment_content, comment_author FROM  $wpdb->posts$wpdb->comments WHERE $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND (post_status = 'publish' OR post_status = 'static')";

    if(!
    $show_pass_post) { $request .= "AND post_password ='' "; }

        
    $request .= "AND comment_approved = '1' ORDER BY $wpdb->comments.comment_date DESC LIMIT $no_comments";
    и все будет работать.
    Не уверен что в третьей версии, возможно и раньше, пропали глобальные переменные tablecomments, tableposts.
     
    b2farm нравится это.
  7. b2farm

    b2farm

    Регистр.:
    17 фев 2008
    Сообщения:
    498
    Симпатии:
    197
    спасибо, действительно прозевал отмену $tablecomments, $tableposts; так как не обновлялся до этого даже до 2.9
     
Статус темы:
Закрыта.