如何在短代码 WordPress 的循环中使用模板或部分?

How to use a template or partial inside a loop in a shortcode WordPress?

为了更好地组织我的代码,我想在模板中拆分我的一些 HTML。 我在短代码中有一个循环来获取帖子:

function nh_shortcode_func($atts) {
    $posts = get_posts_by_category(.......);
    $html .= '';
    foreach ($posts as $post) {
       $post_id = $post->ID;
       $post_title = $post->post_title;
       $post_image = get_field('image', $post_id);

       $html .= **HERE THE CODE OF HTML WITH DIVS AND CLASSES**
    }
    return $html
}

add_shortcode('nh-content', 'nh_shortcode_func');

相反,将我的 HTML 代码放在一个变量中,我想使用另一个具有 HTML 结构的文件,我将使用它来构建帖子。另外,我想将动态数据传递给它。

有什么想法吗?

谢谢。

只需使用一个包含文件,它就可以访问变量。类似于:

function nh_shortcode_func($atts) {
    ob_start();
    include dirname( __FILE__ ) . '/templates/nh_shortcode.php';
    return ob_get_clean();
}

add_shortcode('nh-content', 'nh_shortcode_func');