Cómo pasar código abreviado de WordPress con parámetros a la plantilla

Tengo una plantilla con un tema secundario y edito la función de plantilla secundaria.php

Goal es crear un código corto que tendrá parámetros y parte del archivo de plantilla

mi función se ve así:

function my_shortcode($atts = array() ) {
    extract(shortcode_atts(array(
        'catid' => '5'
    ), $atts));
    ob_start();
   include(get_template_part('mynews-temp'));
    return ob_get_clean();
}
add_shortcode('mynews', 'my_shortcode');

[mynews catid="5"] la salida del código corto debe ser una consulta de noticias con cat id 5

esta es parte de la plantilla con consulta

<?phpif ( ! defined( 'ABSPATH' ) ) {exit( 'Direct script access denied.' );}
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'mynews',
'tax_query' => array(
array(
'taxonomy' => 'newstypes',
'field' => 'tag_ID',
'terms' => array('$catid')
),),));
if( $posts ): ?>
<?php foreach( $posts as $post ):
setup_postdata( $post );?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><
<?php endforeach; ?>
<?php endif;    wp_reset_postdata(); ?>

No funciona, no puedo encontrar lo que es un error

PD. bruja es correcta cuando uso la plantilla secundaria:

 include(get_template_part('mynews-temp'));
 or  include(locate_template('mynews-temp'));

Respuestas a la pregunta(0)

Su respuesta a la pregunta