Hi Dev,
Today, i we will show you sort by dropdown custom wp_query in wordpress. This article will give you simple example of sort by dropdown custom wp_query in wordpress. you will sort by dropdown custom wp_query in wordpress. In this article, we will implement a sort by dropdown custom wp_query in wordpress.
So let’s follow few step to create example of sort by dropdown custom wp_query in wordpress.
Example 1:- Search by Category
<?php if ( is_search() && is_category() ) { ?> <select name="sort-posts" id="sortbox" onchange="document.location.href='?s=<?php the_search_query(); ?>&cat=<?php echo $_GET['cat'] ;?>&'+this.options[this.selectedIndex].value;"> <?php } elseif ( is_category() || is_archive() ) { ?> <select name="sort-posts" id="sortbox" onchange="document.location.href='?'+this.options[this.selectedIndex].value;"> <?php } else { ?> <select name="sort-posts" id="sortbox" onchange="document.location.href='?s=<?php the_search_query(); ?>&'+this.options[this.selectedIndex].value;"> <?php } ?> <option value="" disabled>Sort by</option> <option value="orderby=date&order=dsc">Newest</option> <option value="orderby=date&order=asc">Oldest</option> <option value="orderby=title&order=asc">Title Asc</option> <option value="orderby=title&order=dsc">Title Desc</option> <option value="orderby=comment_count&order=dsc">Most Comments</option> <option value="orderby=comment_count&order=asc">Least Comments</option> </select> <script type="text/javascript"> <?php if (( $_GET['orderby'] == 'date') && ( $_GET['order'] == 'dsc')) { ?> document.getElementById('sortbox').value='orderby=date&order=dsc'; <?php } elseif (( $_GET['orderby'] == 'date') && ( $_GET['order'] == 'asc')) { ?> document.getElementById('sortbox').value='orderby=date&order=asc'; <?php } elseif (( $_GET['orderby'] == 'title') && ( $_GET['order'] == 'asc')) { ?> document.getElementById('sortbox').value='orderby=title&order=asc'; <?php } elseif (( $_GET['orderby'] == 'title') && ( $_GET['order'] == 'dsc')) { ?> document.getElementById('sortbox').value='orderby=title&order=dsc'; <?php } elseif (( $_GET['orderby'] == 'comment_count') && ( $_GET['order'] == 'dsc')) { ?> document.getElementById('sortbox').value='orderby=comment_count&order=dsc'; <?php } elseif (( $_GET['orderby'] == 'comment_count') && ( $_GET['order'] == 'asc')) { ?> document.getElementById('sortbox').value='orderby=comment_count&order=asc'; <?php } else { ?> document.getElementById('sortbox').value='orderby=date&order=desc'; <?php } ?> </script>
Example 2:- Without Search by Category
<?php if ( is_search() ) { ?> <select name="sort-posts" id="sortbox" onchange="document.location.href='?s=<?php the_search_query(); ?>&'+this.options[this.selectedIndex].value;"> <?php } else { ?> <select name="sort-posts" id="sortbox" onchange="document.location.href='?'+this.options[this.selectedIndex].value;"> <?php } ?> <option value="" disabled>Sort by</option> <option value="orderby=date&order=dsc">Newest</option> <option value="orderby=date&order=asc">Oldest</option> <option value="orderby=title&order=asc">Title Asc</option> <option value="orderby=title&order=dsc">Title Desc</option> <option value="orderby=comment_count&order=dsc">Most Comments</option> <option value="orderby=comment_count&order=asc">Least Comments</option> </select> <script type="text/javascript"> <?php if (( $_GET['orderby'] == 'date') && ( $_GET['order'] == 'dsc')) { ?> document.getElementById('sortbox').value='orderby=date&order=dsc'; <?php } elseif (( $_GET['orderby'] == 'date') && ( $_GET['order'] == 'asc')) { ?> document.getElementById('sortbox').value='orderby=date&order=asc'; <?php } elseif (( $_GET['orderby'] == 'title') && ( $_GET['order'] == 'asc')) { ?> document.getElementById('sortbox').value='orderby=title&order=asc'; <?php } elseif (( $_GET['orderby'] == 'title') && ( $_GET['order'] == 'dsc')) { ?> document.getElementById('sortbox').value='orderby=title&order=dsc'; <?php } elseif (( $_GET['orderby'] == 'comment_count') && ( $_GET['order'] == 'dsc')) { ?> document.getElementById('sortbox').value='orderby=comment_count&order=dsc'; <?php } elseif (( $_GET['orderby'] == 'comment_count') && ( $_GET['order'] == 'asc')) { ?> document.getElementById('sortbox').value='orderby=comment_count&order=asc'; <?php } else { ?> document.getElementById('sortbox').value='orderby=date&order=desc'; <?php } ?> </script>
I hope it will assist you…