Copious Comments: Listet zuviel bzw falsches auf.

Die aktuelle Version 1.0.12 des Plugins CopiousComments hat ein paar Bugs. Diese fallen aber nur auf, wenn man statt der Artikel die Seiten aufgelistet haben möchte, oder wenn man weniger Seiten hat, als das Plugin auflisten soll. Dann sieht man das es einfach alles aus der wp_posts Tabelle holt, sortiert nach der Anzahl der Kommentare. Type ist Post oder Page -> egal,  Post_status -> egal.

Da ich seit 3 Tagen mit dem Support am rummachen bin und die offenbar nicht so ganz verstehen was mein Problem ist (Ist wohl völlig unvorstellbar das jemand das Plugin einsetzt der erst nur 3 Artikel im System hat), hab ich angefangen die für mich wichtigsten Fehler zu fixen. Es sind noch weitere Probleme vorhanden. Per Shortcode kann der Posttype nicht gewählt werden, aber für mich funktioniert es erst einmal so. Ich hoffe ja noch immer das der Support mich versteht und mein anliegen an die Programmierer weiterreicht.

Hier das Diff meiner Änderungen. Benutzung auf eigene Gefahr. Der Fix mit dem Prepared Statement ist in diesem Umbau bereits enthalten.

--- C:wampwwwtest_origwp-contentpluginscopiouscommentscopiouscomments.php    2011-12-16 18:20:12.000000000 +0100
+++ C:wampwwwtestwp-contentpluginscopiouscommentscopiouscomments.php    2012-12-12 22:55:38.000000000 +0100
@@ -231,35 +231,35 @@
             if ( isset( $instance['truncate'] ) ) {
                 $truncate = intval( $instance['truncate'] );
             } else {
                 $truncate = intval( $this->_options['truncate'] );
             }
             if ( isset( $instance['post_type'] ) ) {
-                $post_type = intval( $instance['post_type'] );
+                $post_type = ( $instance['post_type'] );
             } else {
-                $post_type = intval( $this->_options['post_type'] );
+                $post_type = ( $this->_options['post_type'] );
             }

             //echo apply_filters( 'widget_title', $instance['title'] );
-            echo $this->create( $posts, 'default', $width, $truncate );
+            echo $this->create( $posts, 'default', $width, $truncate, $post_type );
         }

         // $width    string        Maximum width that a bar can be in percent.
-        function create( $post_limit, $layout, $width, $truncate ) {
+        function create( $post_limit, $layout, $width, $truncate, $post_type='post' ) {
             $this->instance_count++;

             add_action( 'wp_footer', array( &$this, 'print_footer') );

             $css = '';
             if ( file_exists( $this->_pluginPath . '/layouts/' . $layout . '/init.txt' ) ) {
                 eval( file_get_contents( $this->_pluginPath . '/layouts/' . $layout . '/init.txt' ) );
             }

             global $wpdb;
-            $query = "select * from $wpdb->posts order by comment_count DESC limit $post_limit";
-            $posts = $wpdb->get_results( $wpdb->prepare( $query ) );
+            $query = "select * from $wpdb->posts where post_status='publish' and post_type='%s' order by comment_count DESC limit %d";
+            $posts = $wpdb->get_results( $wpdb->prepare( $query , $post_type, $post_limit) );

             $return = '';
             $return .= '<ul id="pb-copious-' . $this->instance_count . '">';
             $i = 0;
             if ( $posts ) {
                 global $post;

[Update]In Version 1.0.14 des Plugins ist  der Fehler behoben. [/Update]

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert