Wordpress循环w /自定义函数返回多次

时间:2010-11-12 21:34:55

标签: wordpress plugins

我在插件中使用了一个自定义函数我发现了here.但是由于某种原因,当我在主循环中使用该函数时,整个循环被返回3次。< / p>

功能如下:

<?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;

    }
    ?>

index.php如下:

<?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(); ?>

有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

您好 @Lee Simpson

这段代码是我认为用于WordPress的一些最痛苦的代码。为什么它如此糟糕,它完全绕过WordPress API,而不是一个好方法。

如果您可以描述投票数据的存储位置(您没有发布GetVote()函数,因此我无法分辨投票的位置)我认为我们可以大大精简那个肮脏。

-Mike