2013-09-23 3 views
0

Я пытаюсь закодировать пользовательскую функцию для загрузки множества продуктов в отдельных div, которые будут использоваться внутри вкладок. Каждая вкладка имеет название категории, и каждое содержимое вкладки содержит продукты.Загрузить шаблон в WordPress без эха

Я пытаюсь использовать шаблон woocommerce для отображения продукта в цикле, но он сразу же запускает эхо, что нарушает дизайн. Мне нужно получить результаты в выходном параметре и повторить его в конце.

Мой код, после того, как перекручивание категории (Еогеасп в $ 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 без эха. Это возможно ?

Благодаря

+0

Посмотрите, есть ли в woocommerce_get_template() действие, определенное в нем. например do_action ('woocommerce_get_template_part', params ...). Если это так, измените прямой вызов функции через действие. – anupam

+0

Спасибо за этот ответ. Я еще не пробовал, так как решение, предлагаемое компанией @Hobo, работает, но я очень ценю вашу помощь. –

ответ

3

Если я понял, что проблема правильно, вы должны быть в состоянии сделать это с помощью РНР output buffering functionality. Что-то вроде этого (непроверено):

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; 
+0

Большое спасибо! Оно работает ! –

 Смежные вопросы

  • Нет связанных вопросов^_^