• I’m using the following code from the wp_dropdown_categories codex page (https://codex.www.ads-software.com/Template_Tags/wp_dropdown_categories):

    <form action="<?php bloginfo('url'); ?>/" method="get">
    	<div>
    <?php
    $select = wp_dropdown_categories('show_option_none=Select category&show_count=1&orderby=name&echo=0&child_of=5');
    $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange='return this.form.submit()'>", $select);
    echo $select;
    ?>
    	<noscript><div><input type="submit" value="View" /></div></noscript>
    	</div></form>

    This works fine in posts, however using it on a page it poses a problem – when you select an entry from the drop down, it takes you to https://yoursite.com/?cat=X (x=category you selected), rather than https://yoursite.com/?page_id=Y&cat=X (Y=page the drop down is on).

    I tried modifying the Form Action url to include page_id=Y, but it still takes you back to the main page when you select an option from the drop down.

    What am I missing here?

Viewing 6 replies - 1 through 6 (of 6 total)
  • Maybe I’m missing something but it seems like a category dropdown should take you to https://yoursite.com/?cat=X no matter where it is used and it also seems like /?page_id=Y&cat=X would never happen because pages are not assigned to categories.

    Thread Starter planky

    (@planky)

    This page is using a template to list posts with a specific category. On said page is the dropdown that lists the children of the specific category – the intention being you can use the drop down to filter the results shown on the page.

    I’m certain I’ve worked around it before, but for the life of me cannot remember how I did it.

    I have used a page template to display posts from a category but I have never tried to drill it down into sub-categories. Having said that, it seems like you might be able to use the exclude parameter to exclude the parent categories from the dropdown if &child_of is not working. Of course that may be the long way around if you have a lot of top-level categories. There may be an include parameter that you could use rather than exclude. Sorry I have to bail at this juncture because I don’t know for sure.

    Thread Starter planky

    (@planky)

    Not to worry – that side of the code works, albeit only if you manually type the address in (?page_id=Y&cat=X).

    The issue is the form code taking the user to the main page, rather than the page the dropdown is on. More of an html issue than wordpress I’m guessing.

    I hope someone who knows more will respond for you.

    Thread Starter planky

    (@planky)

    I switched over to the other javascript example on the wp_dropdown_categories page and it works fine.

    <?php wp_dropdown_categories('show_option_none=Select category&show_count=1&orderby=name&child_of=5'); ?>
    
    <script type="text/javascript"><!--
        var dropdown = document.getElementById("cat");
        function onCatChange() {
    		if ( dropdown.options[dropdown.selectedIndex].value > 0 ) {
    			location.href = "<?php echo get_option('home');
    ?>/?page_id=22&cat="+dropdown.options[dropdown.selectedIndex].value;
    		}
        }
        dropdown.onchange = onCatChange;
    --></script>
Viewing 6 replies - 1 through 6 (of 6 total)
  • The topic ‘Using wp_dropdown_categories on pages’ is closed to new replies.