it-swarm.com.de

Wie ändere ich die Kommentare, die in einem Beitrag angezeigt werden sollen?

Ich möchte wissen, wie man die Art und Weise ändert, wie WordPress die Kommentare auf einer Seite anzeigt. Die vorliegende Anforderung besteht darin, eine bestimmte Anzahl von Kommentaren in der Kommentarliste anzuzeigen. Während der Benutzer zum Ende der Kommentarliste (nicht auf der Seite) blättert, wird ein neuer Satz von Kommentaren an die Kommentarliste angehängt (sofern vorhanden) Es müssen noch weitere Kommentare angezeigt werden.

Ich habe den folgenden Code, um die anzuzeigenden Kommentare aufzurufen:

<?php
require_once("../../../wp-config.php");

$page = $_GET['cpage'];
if(isset($page))
{
    echo loadComments($page);                          
}

function loadComments($page=1)
{
    global $wpdb;   

    $number=5;    
    $result='';

    // get comments from WordPress database 
    $numRows = $wpdb->get_var("SELECT COUNT(*)
                            FROM $wpdb->comments 
                            WHERE comment_approved = '1' 
                                AND NOT (comment_type = 'pingback' OR comment_type = 'trackback')");            

    if ($numRows > $number)
    {
            $nav=1;
            $pages=ceil($numRows/$number);
    }
    else {
        $nav=0;
        $pages=0;
    }

    $getnumber=$number*$page;

    // get comments from WordPress database 
    $comments = $wpdb->get_results("SELECT * FROM $wpdb->comments 
                                    WHERE comment_approved = '1' 
                                        AND NOT (comment_type = 'pingback' OR comment_type = 'trackback')
                                    ORDER BY comment_date_gmt ASC 
                                    LIMIT $getnumber");     

    $comments=array_slice($comments, $getnumber-$number, $number);          
    if ( $comments )
    {
        $count=1;

        // display comments one by one
        foreach ($comments as $comment)
        {  
            if ($page <= $pages)
            {
                $result.= '<li id="comment-'.$comment->comment_ID.'" class="leftcolumn"><div class="commenttext"><div style="padding:20px 0 0 10px;"><img src="/wp-content/themes/twentyten/images/headers/ImgQuotationMarkOpen.gif" alt="" title="" class="openarrow" />'.
                        '</div><div style="padding:0 10px 0 40px;"><p>'.$comment->comment_content.'</p></div>'.
                        '<div style="padding:0 10px 0 0; text-align:right;"><img src="/wp-content/themes/twentyten/images/headers/ImgQuotationMarkClose.gif" alt="" title="" style="border:0;" class="closearrow"/></div>'.
                        '</div></li>'.'<li class="middlecolumn"><img src="/wp-content/themes/twentyten/images/headers/ImgBubbleTopRight.gif" class="pointerarrow" /></li>'.
                        '<li class="rightcolumn" id='.$comment->comment_ID.'">'.'<div style="padding:25px 0 0 10px; line-height:10px;" class="commenttextright">'.
                        '<span class="author" style="text-decoration:none;">'.$comment->comment_author.'</span><div style="height:5px;"></div>'.
                        '<span style="font-family:Arial; font-size:12px;">'.mysql2date('j-n-Y',$comment->comment_date).'</span>'.
                        '</div></li><div style="clear:both;"></div><div style="height:10px;"></div>'.
                        '<div style="height:1px; border-bottom:1px dashed  #3e3e3e;"></div><div style="height:10px;"></div>';           

                $count++;           
           }
           else
           {
            $result = '';
           }
        }
    }   
    return $result;
}

?>

und dies ist der Ajax-Aufruf zum Anhängen einer neuen Reihe von Kommentaren:

function updatestatus(){
    //Show number of loaded items
    var totalItems=$('.commentlist li div.commenttext').length;
    $('#status').text('Loaded '+totalItems+' Items');
}

function scrollalert(){
    var scrolltop=$('.commentlist').attr('scrollTop');
    var scrollheight=$('.commentlist').attr('scrollHeight'); //825
    var windowheight=$('.commentlist').attr('clientHeight'); //600
    var scrolloffset=20;
    //alert(scrolltop);
    if(scrolltop >= (scrollheight - (windowheight + scrolloffset)))
    {
        //fetch new items
        if (count > 0 )
        {
            count++;
            $('#status').text('Loading more items...');
            $.get('/wp-content/themes/twentyten/commentloader.php?cpage='+count, '', function(newitems){           
                if (newitems != '')
                {
                    $('.commentlist').append(newitems);
                    updatestatus();                    
                }   
                else
                {   
                    // prevent from appending content
                    count = -1;
                }
            });
       }
       else
       {
            $('#status').text('No more items to load...');
       }
    }

  setTimeout('scrollalert();', 1500);
}

Ich habe versucht, die beiden Dateien in den Themenordner einzufügen und einen Verweis auf die Datei header.php für js hinzuzufügen. Das funktioniert, aber ich muss das Paging für die Kommentare aktivieren und die Navigation ausblenden. Wenn Sie einen besseren Weg bieten könnten, um dies zu erreichen (könnte ein Plugin erstellt werden?), Würde ich das sehr begrüßen. Ich bin neu in WordPress und freue mich, wenn Sie mich in die richtige Richtung führen.

Danke, RNorbe

1
Newbie

WordPress hat eine eigene und sehr spezifische Ajax-Implementierung, das Laden des Kerns dafür macht es falsch.

Beginnen Sie mit dem Lesen von AJAX in Plugins im Codex.

1
Rarst