Advertisement
Guest User

archive 'sortby/ view per page/ pagination' bar

a guest
Feb 27th, 2012
538
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. <?php
  2. function add_jquery_to_head(){
  3. wp_deregister_script('jquery');// unregister default wp jquery
  4. wp_register_script('jquery','http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');//set new jquery
  5. wp_enqueue_script('jquery');// then load it
  6. }
  7. add_action('template_redirect', 'add_jquery_to_head');
  8.  
  9. function addurlscript(){?>
  10. <script type="text/javascript">
  11. /*http://eureka.ykyuen.info/2011/07/09/jquery-%E2%80%93-get-url-query-string */
  12. $.extend({ // get values from URL
  13. getUrlVars: function(){
  14. var vars = [], hash;
  15. var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
  16. for(var i = 0; i < hashes.length; i++) {
  17. hash = hashes[i].split('=');
  18. vars.push(hash[0]);
  19. vars[hash[0]] = hash[1];
  20. }
  21. return vars;
  22. },
  23. getUrlVar: function(name){
  24. return $.getUrlVars()[name];
  25. }
  26. });
  27.  
  28. /*http://blog.rutwick.com/use-jquery-to-reorder-your-wp-posts-on-the-fly */
  29. $(document).ready(function(){
  30. $('.sorter-dropdown').change(function(){
  31. var sort_str = $(this).val();
  32. if ($.getUrlVar('amt_per') ==undefined){
  33. var amt_str = '10'; //default pg amount
  34. }else{
  35. var amt_str =$.getUrlVar('amt_per');
  36. }
  37. window.location.href = "?sort_by="+sort_str+"&amt_per="+amt_str;
  38. $(this).addClass("highlight");
  39. });
  40.  
  41. $('.amt-button').click(function(){
  42. var amt_str = $(this).text();
  43. if ($.getUrlVar('sort_by') ==undefined ){
  44. var sort_str = 'date'; //default sorting
  45. }else{
  46. var sort_str =$.getUrlVar('sort_by');
  47. }
  48. window.location.href = "?sort_by="+sort_str+"&amt_per="+amt_str;
  49. $(this).addClass("highlight");
  50. });
  51. });
  52.  
  53. </script>
  54. <?php }
  55. add_action('wp_head', 'addurlscript');
  56.  
  57.  
  58. /* Must use pretty permalinks */
  59. function change_amt_archive(){
  60. ?>
  61. <style type="text/css">
  62. button.amt-button{background-color:#eee;border-width:0;}
  63. button.amt-button:hover{background-color:#ccc;}
  64. button.highlight{font-weight:bold;}
  65. option.highlight{font-weight:bold;}
  66. .archive-bar{height:23px;background-color:#ddd;}
  67. .sorter-div{width:40%;margin-left:1%;float:left;display:inline-table; text-align:left;}
  68. .sorter-dropdown{width:140px;}
  69. .change-amt-div{width:30%;float:none;display:inline-table;text-align:center;}
  70. .pagination-div{ margin-right:1%;width:26%;float:right;display:inline-table;text-align:right;}
  71. </style>
  72. <?php
  73. global $sort;
  74. global $sortby;
  75. global $amt;
  76. global $amtper;
  77.  
  78. if(isset($_GET['amt_per']) && $_GET['amt_per'] != ''){
  79. $amt = $_GET['amt_per'];
  80. switch($amt){
  81. case '10': $amtper = '10'; break;
  82. case 'all': $amtper = '-1'; break;
  83. }
  84. }else{ $amtper = '10';}
  85.  
  86. if(isset($_GET['sort_by']) && $_GET['sort_by'] != ''){
  87. $sort = $_GET['sort_by'];
  88. switch($sort){
  89. case 'date' : $sortby = 'date'; break;
  90. case 'date-mod': $sortby = 'modified'; break;
  91. case 'title' : $sortby = 'title'; break;
  92. case 'comment' : $sortby = 'comment_count'; break;
  93. }
  94. }else{ $sortby = 'date';}
  95.  
  96. ?>
  97. <div class="archive-bar">
  98. <div class="sorter-div">
  99. <b>Sort posts by:</b>
  100. <select class="sorter-dropdown" >
  101. <option value="date" <?php echo (!isset($sort) || $sort == '' || $sort == 'date')? 'selected="selected"':''; ?>>Date (default)</option>
  102.  
  103. <option value="date-mod" <?php echo ($sort == 'date-mod')?
  104. 'selected="selected"':''; ?>>Date Modified</option>
  105.  
  106. <option value="title" <?php echo ($sort == 'title')?
  107. 'selected="selected"':''; ?>>Title</option>
  108.  
  109. <option value="comment" <?php echo ($sort == 'comment')?
  110. 'selected="selected"':''; ?>>Comments Count</option>
  111. </select>
  112. </div>
  113.  
  114. <div class="change-amt-div">
  115. <b>Posts per page:</b>
  116. <button class="amt-button" >10</button>
  117. <button class="amt-button" >all</button>
  118. </div>
  119.  
  120. <?php
  121. query_posts(array(
  122. 'posts_per_page' => $amtper,
  123. 'orderby' => $sortby,
  124. //'order' => $asc-desc
  125. ));
  126. global $wp_query;
  127. $big = 999999999; // need an unlikely integer this is set here so pagionation works below
  128.  
  129. ?>
  130. <div class="pagination-div"><?php
  131. echo paginate_links( array(
  132. 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
  133. 'format' => '?paged=%#%',
  134. 'current' => max( 1, get_query_var('paged') ),
  135. 'total' => $wp_query->max_num_pages
  136. ));
  137. ?></div>
  138. </div>
  139. <?php
  140.  
  141. }//close change_amt_archive function
  142.  
  143. /* template tag: (paste above archive loop in archive.php template)
  144. <?php $paged = (get_query_var('paged')) ? (int) get_query_var('paged') : 1;
  145. $page_link = get_permalink($id) ?>
  146. <?php if(function_exists('change_amt_archive')){ change_amt_archive(); } ?>
  147. */
  148.  
  149.  
  150.  
  151. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement