Advertisement
Guest User

archive 'sortby/ view per page/ pagination' bar-2/28/12

a guest
Feb 28th, 2012
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.75 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. //check for other values
  33. if ($.getUrlVar('amt_per') ==undefined){ var amt_str = '10';} /// if undefined make default pg amount
  34. else{ var amt_str =$.getUrlVar('amt_per');} // else get variable from url
  35. if ($.getUrlVar('order_dir') ==undefined){ var amt_str = 'DESC';} /// if undefined make default order direction
  36. else{ var ord_str =$.getUrlVar('order_dir');} // else get variable from url
  37.  
  38. window.location.href = "?sort_by="+sort_str+"&amt_per="+amt_str+"&order_dir="+ord_str;
  39. $(this).addClass("highlight");
  40. });
  41.  
  42. //
  43. $('.order-button').click(function(){
  44. var ord_str = $(this).val();
  45. //check for other values
  46. if ($.getUrlVar('sort_by') ==undefined ){ var sort_str = 'date';} // if undefined make default
  47. else{ var sort_str =$.getUrlVar('sort_by');} // else get variable from url
  48. if ($.getUrlVar('amt_per') ==undefined){ var amt_str = '10';} /// if undefined make default pg amount
  49. else{ var amt_str =$.getUrlVar('amt_per');} // else get variable from url
  50.  
  51. window.location.href = "?sort_by="+sort_str+"&amt_per="+amt_str+"&order_dir="+ord_str;
  52. $(this).addClass("highlight");
  53. });
  54. //
  55.  
  56.  
  57. $('.amt-button').click(function(){
  58. var amt_str = $(this).val();
  59. //check for other values
  60. if ($.getUrlVar('sort_by') ==undefined ){ var sort_str = 'date';} // if undefined make default
  61. else{ var sort_str =$.getUrlVar('sort_by');} // else get variable from url
  62. if ($.getUrlVar('order_dir') ==undefined){ var amt_str = 'DESC';} /// if undefined make default order direction
  63. else{ var ord_str =$.getUrlVar('order_dir');} // else get variable from url
  64.  
  65. window.location.href = "?sort_by="+sort_str+"&amt_per="+amt_str+"&order_dir="+ord_str;
  66. $(this).addClass("highlight");
  67. });
  68.  
  69.  
  70. // trying to make higlight stylecarry over.
  71. $(window).load(function(){
  72. // get the amt per value from url set it as amt_highlight var
  73. var amt_highlight = $.getUrlVar('amt_per');
  74. // if a button with class.amount-buttons value is equal to amt_highluight
  75. if ( $('.amt-button').val(); == amt_highlight){
  76. // then add class to that button
  77. $(this).addClass("highlight");
  78. }
  79. });
  80.  
  81.  
  82.  
  83. });
  84.  
  85. </script>
  86. <?php }
  87. add_action('wp_head', 'addurlscript');
  88.  
  89.  
  90. /* Must use pretty permalinks */
  91. function change_amt_archive(){
  92. ?>
  93. <style type="text/css">
  94. button.amt-button,button.order-button {background-color:#eee;border-width:0;}
  95. button.amt-button:hover,
  96. button.order-button:hover{background-color:#ccc;}
  97. button.highlight,
  98. option.highlight{font-weight:bold;}
  99. .archive-bar{height:23px;background-color:#ddd; font-size:10px;font-family:Verdana, Arial, Helvetica, sans-serif;}
  100. select.sorter-dropdown, select.sorter-dropdown option, button {font-size:10px;}
  101. .sorter-div{width:25%;margin-left:1%;display:inline-table; text-align:left;}
  102. .sorter-dropdown{width:100px;}
  103. .change-order-div{width:16%;float:none;display:inline-table;text-align:center;}
  104. .change-amt-div{width:26%;float:none;display:inline-table;text-align:center;}
  105. .pagination-div{ margin-right:1%;width:28%;float:right;display:inline-table;text-align:right;}
  106. </style>
  107. <?php
  108. global $sort;
  109. global $sortby;
  110. global $amt;
  111. global $amtper;
  112.  
  113.  
  114. //set up sort cases
  115. if(isset($_GET['sort_by']) && $_GET['sort_by'] != ''){
  116. $sort = $_GET['sort_by'];
  117. switch($sort){
  118. case 'date' : $sortby = 'date'; break;
  119. case 'date-mod': $sortby = 'modified'; break;
  120. case 'title' : $sortby = 'title'; break;
  121. case 'comment' : $sortby = 'comment_count'; break;
  122. }
  123. }else{ $sortby = 'date';}
  124.  
  125. // set up order direction cases
  126. if(isset($_GET['order_dir']) && $_GET['order_dir'] != ''){
  127. $ord = $_GET['order_dir'];
  128. switch($ord){
  129. case 'asc' : $orderdir = 'ASC'; break;
  130. case 'desc': $orderdir = 'DESC'; break;
  131. }
  132. }else{ $orderdir = 'DESC';}
  133.  
  134. // set up amount cases
  135. if(isset($_GET['amt_per']) && $_GET['amt_per'] != ''){
  136. $amt = $_GET['amt_per'];
  137. switch($amt){
  138. case '10' : $amtper = '10'; break;
  139. case 'all': $amtper = '-1'; break;
  140. }
  141. }else{ $amtper = '10';}
  142.  
  143.  
  144.  
  145. ?>
  146. <div class="archive-bar">
  147. <div class="sorter-div">
  148. <b>Sort by:</b>
  149. <select class="sorter-dropdown" >
  150. <option value="date" <?php echo (!isset($sort) || $sort == '' || $sort == 'date')? 'selected="selected"':''; ?>>Date (default)</option>
  151.  
  152. <option value="date-mod" <?php echo ($sort == 'date-mod')?
  153. 'selected="selected"':''; ?>>Date Modified</option>
  154.  
  155. <option value="title" <?php echo ($sort == 'title')?
  156. 'selected="selected"':''; ?>>Title</option>
  157.  
  158. <option value="comment" <?php echo ($sort == 'comment')?
  159. 'selected="selected"':''; ?>>Most Popular</option>
  160. </select>
  161. </div>
  162.  
  163. <div class="change-order-div">
  164. <b>Order:</b>
  165. <button class='order-button' value="asc">&and;</button>
  166. <button class="order-button" value="desc" >&or;</button>
  167. </div>
  168.  
  169.  
  170. <div class="change-amt-div">
  171. <b>Per page:</b>
  172. <button class="amt-button" value="10">10</button>
  173. <button class="amt-button" value="all">view all</button>
  174. </div>
  175.  
  176. <?php
  177. query_posts(array(
  178. 'posts_per_page' => $amtper,
  179. 'orderby' => $sortby,
  180. 'order' => $orderdir
  181. ));
  182. global $wp_query;
  183. $big = 999999999; // need an unlikely integer this is set here so pagionation works below
  184.  
  185. ?>
  186. <div class="pagination-div"><?php
  187. echo paginate_links( array(
  188. 'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
  189. 'format' => '?paged=%#%',
  190. 'current' => max( 1, get_query_var('paged') ),
  191. 'total' => $wp_query->max_num_pages
  192. ));
  193. ?></div>
  194. </div>
  195. <?php
  196.  
  197. }//close change_amt_archive function
  198.  
  199. /* template tag: (paste above archive loop in archive.php template)
  200. <?php $paged = (get_query_var('paged')) ? (int) get_query_var('paged') : 1;
  201. $page_link = get_permalink($id) ?>
  202. <?php if(function_exists('change_amt_archive')){ change_amt_archive(); } ?>
  203. */
  204.  
  205.  
  206.  
  207. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement