Skip to main content
added 498 characters in body
Source Link

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title();
        the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Custom search form

<form id="document-filter" method="post">
    <select name="order_by">
        <option value="date">Date</option>
        <option value="title">Name</option>
    </select>
    <select name="order">
        <option value="desc">DESC</option>
        <option value="asc">ASC</option>
    </select>
    <input name="s" type="text" placeholder="Filter by keyword" value=""/>
    <input name="post_type" type="hidden" value="document"/>
    <input type="submit" />
</form>

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

Example

Posts, in date order, descending:

  1. Post C
  2. Post B
  3. Post A

Initially, my custom query at the top of the page will output Post C, which is correct.

If I use the search/filter form to change the order of the posts to:

  1. Post A
  2. Post B
  3. Post C

The singular queried post will now be Post A, which is incorrect. My custom query args have not changed, but are being overridden by the search form somehow.

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title();
        the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Custom search form

<form id="document-filter" method="post">
    <select name="order_by">
        <option value="date">Date</option>
        <option value="title">Name</option>
    </select>
    <select name="order">
        <option value="desc">DESC</option>
        <option value="asc">ASC</option>
    </select>
    <input name="s" type="text" placeholder="Filter by keyword" value=""/>
    <input name="post_type" type="hidden" value="document"/>
    <input type="submit" />
</form>

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title();
        the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Custom search form

<form id="document-filter" method="post">
    <select name="order_by">
        <option value="date">Date</option>
        <option value="title">Name</option>
    </select>
    <select name="order">
        <option value="desc">DESC</option>
        <option value="asc">ASC</option>
    </select>
    <input name="s" type="text" placeholder="Filter by keyword" value=""/>
    <input name="post_type" type="hidden" value="document"/>
    <input type="submit" />
</form>

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

Example

Posts, in date order, descending:

  1. Post C
  2. Post B
  3. Post A

Initially, my custom query at the top of the page will output Post C, which is correct.

If I use the search/filter form to change the order of the posts to:

  1. Post A
  2. Post B
  3. Post C

The singular queried post will now be Post A, which is incorrect. My custom query args have not changed, but are being overridden by the search form somehow.

added 498 characters in body
Source Link

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        echo the_title();
        echo the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Custom search form

<form id="document-filter" method="post">
    <select name="order_by">
        <option value="date">Date</option>
        <option value="title">Name</option>
    </select>
    <select name="order">
        <option value="desc">DESC</option>
        <option value="asc">ASC</option>
    </select>
    <input name="s" type="text" placeholder="Filter by keyword" value=""/>
    <input name="post_type" type="hidden" value="document"/>
    <input type="submit" />
</form>

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        echo the_title();
        echo the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        the_title();
        the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Custom search form

<form id="document-filter" method="post">
    <select name="order_by">
        <option value="date">Date</option>
        <option value="title">Name</option>
    </select>
    <select name="order">
        <option value="desc">DESC</option>
        <option value="asc">ASC</option>
    </select>
    <input name="s" type="text" placeholder="Filter by keyword" value=""/>
    <input name="post_type" type="hidden" value="document"/>
    <input type="submit" />
</form>

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

deleted 25 characters in body
Source Link

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        echo the_title();
        echo the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc) or search for a keyboard, the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        echo the_title();
        echo the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc) or search for a keyboard, the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

I am using a customised archive template for a custom post type.

At the top of the page, I'd like to show a specific post, found using a new wp_query() call.

$args = [
    'posts_per_page' => 1,
    'post_type' => 'document',
    'order' => 'DESC',
    'orderby' => 'date',
];
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        echo the_title();
        echo the_date( 'F Y' );
    }
    wp_reset_postdata();
}

Initially, it works. However, if I then use the custom search form to either sort the archive list (date/name, asc/desc), the custom wp_query() is affected, and the query_vars array is overriding my supplied arguments.

Source Link
Loading