php - How to pass the data dynamically to post__in

I have below code on my page

$speakersselected = get_post_meta($post->ID, 'speakersselected', true);
print_r($speakersselected); //getting output (587,585)

        $s_post = array(
          'showposts' => 80, 
          'post_type' => 'speaker',
          'post_status'  => 'publish',
          'post__in'    =>$speakersselected,
           //'post__in'    =>array($speakersselected),
            //'post__in'    => array(587,585),
           );
    
       
     echo"<pre>";
     print_r($s_post);  

Output

if I use 'post__in' =>$speakersselected then I am getting below output

Array
(
    [showposts] => 80
    [post_type] => speaker
    [post_status] => publish
    [post__in] => 587,585
)

if i use 'post__in' =>array($speakersselected) then getting below output

Array
(
    [showposts] => 80
    [post_type] => speaker
    [post_status] => publish
    [post__in] => Array
        (
            [0] => 587,585
        )

)

Both the output not working for me

if i add the static data 'post__in' => array(587,585) then it's working for me

Array
(
    [showposts] => 80
    [post_type] => speaker
    [post_status] => publish
    [post__in] => Array
        (
            [0] => 587
            [1] => 585
        )

)

Any idea how to send dynamic data in post__in?

Answer

Solution:

You are getting strings in $speakersselected and 'post__in' attribute need the value in the array format. So you need to convert the string to an array then it will work.

$speakersselected = get_post_meta($post->ID, 'speakersselected', true);
$speakersselected = explode(',',$speakersselected);

    $s_post = array(
      'showposts'   => 80, 
      'post_type'   => 'speaker',
      'post_status' => 'publish',
      'post__in'    => $speakersselected,
    );

Source