1

I am really confused about this one, I am usually pretty good at working out basic queries but I can't seem to work this one out.

Please see below my index.php query. Now it is not your basic query because I have a special drop down menu to filter posts on the home page.

I have a taxonomy set up called Site Position, and my term is called Home Page Exclude. This taxonomy is assigned to my posts.

In an array slug style, I use this in my WP_querys.. 'position' => 'home-page-position',

But the term I wish to exclude, as a slug is called home-page-exclude


My question is, from this slightly more complex query below.. how can I exclude all posts with this term??

<?php

        if ($_REQUEST['sort'] == 'oldest')

            $order = "&orderby=date&order=ASC";

        else if ($_REQUEST['sort'] == 'views')

            $order = "&meta_key=views&orderby=meta_value_num&order=DESC";

        else

            $order = "&orderby=date&order=DESC";

    ?>

    <form method="post" id="order">

        <?php $url = get_bloginfo('url');?>
        <select name="sort" onchange='location.href="<?php echo $url ?>?sort="+this.value'>
            <option value="newest" <?php if (isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'newest' ){ ?> selected="selected" <?php } ?> >Sort by Newest</option> <!-- default -->
            <option value="oldest" <?php if (isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'oldest' ){ ?> selected="selected" <?php } ?> >Sort by Oldest</option>
            <option value="views" <?php if (isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'views' ){ ?> selected="selected" <?php } ?> >Sort by Most Viewed</option>
        </select>

    </form>



<?php wp_reset_query(); $posts = query_posts($query_string . $order); ?>

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>



This is what I have tried but doesn't work.

<?php

        $tax_query = array (
            array(
                'taxonomy' => 'position',
                'terms' => 'home-page-exclude',
                'field' => 'slug',
                'operator' => 'NOT IN'
            )
        );

        if ($_REQUEST['sort'] == 'oldest')

            $order = "&orderby=date&order=ASC";

        else if ($_REQUEST['sort'] == 'views')

            $order = "&meta_key=views&orderby=meta_value_num&order=DESC";

        else

            $order = "&orderby=date&order=DESC";

    ?>

    <form method="post" id="order">

        <?php $url = get_bloginfo('url');?>
        <select name="sort" onchange='location.href="<?php echo $url ?>?sort="+this.value'>
            <option value="newest" <?php if(isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'newest' ){ ?> selected="selected" <?php } ?> >Sort by Newest</option> <!-- default -->
            <option value="oldest" <?php if(isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'oldest' ){ ?> selected="selected" <?php } ?> >Sort by Oldest</option>
            <option value="views" <?php if(isset($_REQUEST['sort']) && $_REQUEST['sort'] == 'views' ){ ?> selected="selected" <?php } ?> >Sort by Most Viewed</option>
        </select>

    </form>

</div>

<?php wp_reset_query(); $posts = query_posts( $query_string . $order . $tax_query ); ?>

<?php if (have_posts()) : ?>

<?php while (have_posts()) : the_post(); ?>


Any ideas would be very awesome thanks.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.