Wordpress get_posts()类别参数问题

I'm showing a grid of posts with get_posts() function and trying to control category parameter value from a custom field.

my code works if category parameter gets value from echo function for example:

$args = array( 
'numberposts' => 6,
'category'         => '<?php echo "25";?>'
,);

but it doesn't when I do something like

$catid = get_field( "id_of_product_category" );
$args = array( 
'numberposts' => 6,
'category'         => '<?php echo $catid;?>'
,);

at the same time I'am able to

echo $catid;

on the page and it does show correct value set in custom field.

Why I can't get it to work to change category parameter then?

I just realized that your get_field() is missing a second parameter. If you don't specify the specific id of the post that has a field with that name, it will most likely default to the current post's value if it exists. So you basically need to loop through your get_posts() to get the current post that would have the value you are seeking, then do the functionality you are looking for. Exposing more of your could would be helpful.

// Get your custom field from ACF based on field name and the ID of the post
$catid = get_field( "id_of_product_category", $post->ID );

$args = array( 
'numberposts' => 6,
'category'    => $catid
);