Home » Php » php – WordPress: WP_Query search criteria on 'post_name'

php – WordPress: WP_Query search criteria on 'post_name'

Posted by: admin July 12, 2020 Leave a comment

Questions:

I’m using WP_Query (pretty standard). It all works great.

However, I have a particular modification to make, where, if the user enters the specific post name in the URL, the search will return only the post that matches that post_name value.

See my code below with a comment about the particular line not working.

<?php

$getPeople = array(
    'post_type' => 'person',
    'posts_per_page' => -1,
    // I want this below to only return me the post with this specific value.
    // This doesn't error, but doesn't work either.
    // I know it seems counter-productive to a 'search' but this particular case requires it.
    // This has a hard-coded value at the moment.
    'post_name' => 'rebecca-atkinson',
    'orderby' => 'meta_value',
    'meta_key' => 'last-name',
    'order' => 'ASC',

    'meta_query' => array(
        array(
            'key' => 'gender',
            'value' => $theGender,
        )
    ),

    'tax_query' => array(

        'relation' => 'OR',

        array(
            'taxonomy' => 'accent',
            'field' => 'slug',
            'terms' => $theAccent,
            'operator' => 'IN',
        ),
        array(
            'taxonomy' => 'style',
            'field' => 'slug',
            'terms' => $theStyle,
            'operator' => 'IN',
        ),
        array(
            'taxonomy' => 'age',
            'field' => 'slug',
            'terms' => $theAge,
            'operator' => 'IN',
        ),

    )
);

$myposts = new WP_Query($getPeople);

?>

Your help would be greatly appreciated. If I could just see how to search on this specific ‘slug’ then that would be great.

Many thanks,
Michael.

How to&Answers:

Instead of

'post_name' => 'rebecca-atkinson',

use:

'name' => 'rebecca-atkinson',

Answer:

In addition to my answer in the comments above, I thought I’d post it as an official answer too:

I have to use 'name' and NOT 'post_name'.

For example:

'name' => 'rebecca-atkinson' 

Hope this helps someone in future.