Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I have a posts query that queries posts by ID but want to select those posts by enetering a custom field. Here is the query and where I want to put the custom field:

$query_args = array('post_type'=>'post', 'post_status'=>'publish', 'include' => '483,454, CUSTOM FIELD HERE', 'orderby' => 'date', 'order' => 'ASC');

More info: Custom field is listids and passed in include. But doesn't work.

<?php
&listids = get_post_meta($post->ID, 'list_array', true);
$query_args = array('post_type'=>'post', 'post_status'=>'publish', 'include' => 'echo $listids;', 'orderby' => 'date', 'order' => 'ASC');
$query_posts = get_posts($query_args);
$last_query = end($query_posts);
foreach ($query_posts as $post) : setup_postdata($post); ?> 
share|improve this question
1  
Did you try and search in Google, WordPress handles custom fields in for a query already, codex.wordpress.org/Class_Reference/… –  Wyck Oct 12 '12 at 19:18
    
That's why meta_query is for. Please search on the site. –  kaiser Oct 12 '12 at 19:18
    
No, there is n instructions anywhere for passing the custom field value into an array. –  Mark R Oct 12 '12 at 19:23
    
Right in the link it says meta_query (array) and value (string|array) –  Wyck Oct 13 '12 at 1:19

1 Answer 1

up vote 0 down vote accepted

I will assume that you(or users) will enter post ids into a posts custom field, comma separated, eg: 11,13,34,54 OR 11, 13, 34, 54.

Then all you need to do is get the custom field value for the loaded post, explode the custom field value by comma(,): and, then you'll have a nice array to pass into the include parameter. Here is an example showing the important pieces:

<?php
    $postIds = get_post_meta($post->ID, 'postIds', true); // get custom field value
    $arrayIds = explode(',', $postIds); // explode value into an array of ids
    if(count($arrayIds) <= 1) // if array contains one element or less, there's spaces after comma's, or you only entered one id
    {
        if( strpos($arrayIds[0], ',') !== false )// if the first array value has commas, there were spaces after ids entered
        {
            $arrayIds = array(); // reset array
            $arrayIds = explode(', ', $postIds); // explode ids with space after comma's
        }

    }

    $args = array(
        'include' => $arrayIds // pass array of ids into `include` parameter
    );
    ...
?>
share|improve this answer
    
I thank you very much as this has worked perfectly. You're awesome. –  Mark R Oct 12 '12 at 21:35

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.