0

我正在尝试编写一个自定义函数以在单独的 div 中加载一组产品以在选项卡中使用。每个选项卡都有类别的名称,每个选项卡内容都包含产品。

我正在尝试使用 woocommerce 模板在循环中显示产品,但它会立即触发回声,从而破坏了设计。我需要将结果接收到输出参数中,并在最后回显。

我的代码,在循环类别(foreach as $prod_cat)之后看起来像这样:

$args = array(
    'post_type' => 'product',
    'tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'tag_ID',
            'terms' => $prod_cat['id']
        )
    ),
    'order' => 'ASC'
);

$my_query = null;
$my_query = new WP_Query($args);
$counter = 0;
if ($my_query->post_count) {
    $output .= '<ul class="products">';

    if ($my_query->have_posts()) {
        while ($my_query->have_posts()) : $my_query->the_post();

            setup_postdata($post);

            $output .= woocommerce_get_template_part('content', 'product');

        endwhile;
    }
    $output .= '</ul>';
}

所以它实际上可以正常工作并加载产品,但由于“woocommerce_get_template_part”调用“load_template”,它会回显文件内容。我希望它返回 $output 没有任何回声。那可能吗 ?

谢谢

4

1 回答 1

3

如果我正确理解了这个问题,您应该可以使用 PHP 的输出缓冲功能来做到这一点。像这样的东西(未经测试):

while ($my_query->have_posts()) : $my_query->the_post();
    setup_postdata($post);
    ob_start(); // Start buffering
    woocommerce_get_template_part('content', 'product');
    $output .= ob_get_clean(); // Get the content of the buffer, and end buffering
endwhile;
于 2013-09-23T11:11:48.927 回答