需要PHP向导,重新排序/排序帖子

时间:2012-09-25 15:26:40

标签: php jquery wordpress sorting

我已经在各种论坛上发布了这个,但到目前为止还没有运气(希望可以在这里发布吗?)......我已经尝试了几周......没有成功。

我的博客上有两个页面(评分最高,浏览次数最多)返回一列帖子(标题/大拇指),但在这些列的顶部,我想将这些帖子“过滤”为周/月/整天。 (因为我遵循了一个教程,我想保持它相同,所以我将在以后更改排序选项等)。

以下代码意味着刷新页面并加载新的url,例如example.com/top-rated/?o=title-asc。但到目前为止,它显示了热门​​帖子和带有选项的下拉菜单...当我点击时,实际上没有任何事情发生。

我已经在朋友圈中搭载了我的网站,如果有人可以看看让我知道你的想法...它会很感激。

先谢谢大家:)

这是我的代码:

<?php
/*
 * Template Name: Top Rated
*/
get_header();  ?>

<?php
if( isset($_GET['o']) && $_GET['o'] != '')
          {
              $order = $_GET['o'];
              switch($order)
              {
                case 'date-asc': $orderby = 'order=ASC';
                            $msg = 'Date Ascending';
                              break;

                case 'date-desc': $orderby = 'order=DESC';
                            $msg = 'Date Descending(default)';
                              break;

                case 'date-mod': $orderby = 'orderby=modified';
                                $msg = 'Date Modified';
                               break;

                case 'title-asc': $orderby = 'orderby=title&order=ASC';
                                $msg = 'Title A-Z';
                                break;

                case 'title-desc': $orderby = 'orderby=title&order=DESC';
                                $msg = 'Title Z-A';
                                break;

                case 'comment': $orderby = 'orderby=comment_count';
                                $msg = 'Comment Count';
                                break;
              }
          }
          else
          {
              $orderby = 'order=DESC';
              $msg = 'Date Descending (default)';
          }
?>
<div id="content">
    <div id="sorter-container">
        <script type="text/javascript">
                var orderby = jQuery('#order-by');
                var str;
                orderby.change(function(){
                    str = jQuery(this).val();
                     window.location.href = "<?php echo home_url(); ?>/top-rated/?o="+str;
                });
            </script>
<h2 id="sort-heading">Posts ordered by:<?php echo $msg; ?></h2>
        <select id="order-by">
            <option value="date-desc" <?php echo (!isset($order) || $order == '' || $order == 'date-desc')? 'selected="selected"':''; ?>>Date Desc. (default)</option>
            <option value="date-asc" <?php echo ($order == 'date-asc')? 'selected="selected"':''; ?>>Date Asc</option>
            <option value="date-mod" <?php echo ($order == 'date-mod')? 'selected="selected"':''; ?>>Date Modified</option>
            <option value="title-desc" <?php echo ($order == 'title-desc')? 'selected="selected"':''; ?>>Title Desc.</option>
            <option value="title-asc" <?php echo ($order == 'title-asc')? 'selected="selected"':''; ?>>Title Asc.</option>
            <option value="comment" <?php echo ($order == 'comment')? 'selected="selected"':''; ?>>Comments Count</option>
        </select>
    </div>
<?php query_posts('meta_key=votes_count&orderby=meta_value_num&order=DESC&posts_per_page=10'); ?>
    <?php if ( have_posts() ){ ?>
    <?php  while ( have_posts() ) : the_post() ?>
    <div <?php echo post_class(); ?>>
        <h3> <a href="<?php the_permalink(); ?>"class="img_hover_trans"><?php the_post_thumbnail('featured-small'); ?></a>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> | <small><?php the_time('F jS, Y'); ?></small></h3>
         <?php the_excerpt('Read more...'); ?>
    </div>
    <?php endwhile; ?>
<?php } ?>
</div>
<?php
get_sidebar();
get_footer();

2 个答案:

答案 0 :(得分:1)

如果您关注的教程使用select下拉列表来更改帖子的顺序,那么它也应该为您提供代码,该代码用于处理下拉列表中所选选项的更改。无论如何,您需要一个附加到下拉列表的事件处理程序,当下拉列表发生更改时将触发该事件处理程序。既然你是jQuery 1.6.2,那就足够了:

$('#order-by').bind('change', function(){
    window.location.href = 'http://beetniksound.com/feedme/top-rated/?o=' + $(this).val();
});

注意:您可能不希望在Javascript中对该网址进行硬编码。我不知道Wordpress,但是如果它有一个返回当前页面的url的函数(在本例中是http://beetniksound.com/feedme/top-rated/),你可能想要使用它。

答案 1 :(得分:0)

原来我在错误的地方有一些代码(对不起,我是新手)...所以最后在凯末尔发布一些代码尝试之后发现了它。所以感谢帮助/支持,我将使用新的工作代码更新OP,它应该通过复制和粘贴到您的项目中来工作。如果是这样,请密切关注此部分window.location.href = "<?php echo home_url(); ?>/top-rated/?o="+str;替换您的page-slug评级最高的部分。如果有人知道如何按周/月/全天排序,请在这里发布(因为它会有所帮助) `