2010-11-12 12 views
0

J'utilise une fonction personnalisée dans le plugin Vote It Up pour Wordpress que j'ai trouvé here. Cependant, pour une raison quelconque, lorsque j'utilise la fonction dans la boucle principale, la boucle complète est étant retourné 3 fois.Wordpress Loop w/fonction personnalisée retournant plus d'une fois

La fonction est la suivante:

<?php 
    function ShowPostByVotes() { 
    global $wpdb, $voteiu_databasetable; 

    mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error()); 
    mysql_select_db(DB_NAME) or die(mysql_error()); 
    //Set a limit to reduce time taken for script to run 
    $upperlimit = get_option('voteiu_limit'); 
    if ($upperlimit == '') { 
     $upperlimit = 100; 
    } 
    $lowerlimit = 0; 

    $votesarray = array(); 
      $querystr = " 
       SELECT * 
       FROM $wpdb->posts 
       WHERE post_status = 'publish' 
       AND post_type = 'post' 
       ORDER BY post_date DESC 
      "; 
      $pageposts = $wpdb->get_results($querystr, OBJECT); 
    //Use wordpress posts table 
    //For posts to be available for vote editing, they must be published posts. 
    mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error()); 
    mysql_select_db(DB_NAME) or die(mysql_error()); 
    //Sorts by date instead of ID for more accurate representation 
    $posttablecontents = mysql_query("SELECT ID FROM ".$wpdb->prefix."posts WHERE post_type = 'post' AND post_status = 'publish' ORDER BY post_date_gmt DESC LIMIT ".$lowerlimit.", ".$upperlimit."") or die(mysql_error()); 

    $returnarray = array(); 
    while ($row = mysql_fetch_array($posttablecontents)) { 
     $post_id = $row['ID']; 
     $vote_array = GetVotes($post_id, "array"); 
     array_push($votesarray, array(GetVotes($post_id))); 
    } 
    array_multisort($votesarray, SORT_DESC, $pageposts); 
    $output = $pageposts; 
    return $output; 

    } 
    ?> 

Le index.php est la suivante:

<?php get_header(); ?> 

<?php if (have_posts()) : ?> 

    <?php while (have_posts()) : the_post(); ?> <span> 

<?php $pageposts = ShowPostByVotes(); ?> 

<?php if ($pageposts): ?> <?php foreach ($pageposts as $post): ?> 

     <div> 
      <?php the_title(); ?> 
      <?php the_content(); ?> 
      <?php DisplayVotes(get_the_ID()); ?> 
      <br /><br /> 

    </div> 

<?php endforeach; ?> 

</span> 

<?php endif; ?> 

<?php endwhile; endif; ?> 

<?php get_sidebar(); ?> 

<?php get_footer(); ?> 

Est-ce que quelqu'un a des idées pourquoi cela se passerait-il?

Répondre

0

Salut @Lee Simpson:

Ce code est une partie du code le plus pénible, je pense que je l'ai jamais vu écrit pour être utilisé avec WordPress. Pourquoi est-ce si grave, c'est qu'il contourne complètement l'API WordPress, et pas dans le bon sens.

Si vous pouvez décrire où les données sont stockées vote (vous ne publiez pas la fonction GetVote() donc je ne peux pas dire où les votes sont) Je pense que nous pouvons simplifier grandement que méchancetés.

-Mike