wordpress - WooCommerce Filtering by Custom Attribute (Grouped.php) -


grouped.php in woocommerce creates table , foreach loop runs through each product fill out table products. (code included below)

i add filter grouped.php file (below) show products custom attribute of [contract-type="paym"] products attribute displayed in table when page loads - not want user have control on there no need add filtering options on client side.

any information appreciated on how can make loop execute products containing attribute.

i thinking simple if statement not know handles woocommerce uses identify attributes.

here code in grouped.php file..

<?php /**  * grouped product add cart  *  * @author      woothemes  * @package     woocommerce/templates  * @version     2.1.7  */  if ( ! defined( 'abspath' ) ) {     exit; // exit if accessed directly }  global $product, $post;  $parent_product_post = $post;   do_action( 'woocommerce_before_add_to_cart_form' ); ?>  <form class="cart" method="post" enctype='multipart/form-data'>     <table cellspacing="0" class="group_table">         <tbody>         <?php             foreach ( $grouped_products $product_id ) :                 $product = wc_get_product( $product_id );                  if ( 'yes' === get_option( 'woocommerce_hide_out_of_stock_items' ) && ! $product->is_in_stock() ) {                     continue;                 }                  $post    = $product->post;                 setup_postdata( $post );                 ?>                 <tr>                     <td>                         <?php if ( $product->is_sold_individually() || ! $product->is_purchasable() ) : ?>                             <?php woocommerce_template_loop_add_to_cart(); ?>                         <?php else : ?>                             <?php                                 $quantites_required = true;                                 woocommerce_quantity_input( array( 'input_name' => 'quantity[' . $product_id . ']', 'input_value' => '0', 'min_value' => apply_filters( 'woocommerce_quantity_input_min', 0, $product ), 'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->backorders_allowed() ? '' : $product->get_stock_quantity(), $product ) ) );                             ?>                         <?php endif; ?>                     </td>                      <td class="label">                         <label for="product-<?php echo $product_id; ?>">                             <?php echo $product->is_visible() ? '<a href="' . esc_url( apply_filters( 'woocommerce_grouped_product_list_link', get_permalink(), $product_id ) ) . '">' . esc_html( get_the_title() ) . '</a>' : esc_html( get_the_title() ); ?>                         </label>                     </td>                      <?php do_action ( 'woocommerce_grouped_product_list_before_price', $product ); ?>                      <td class="price">                         <?php                             echo $product->get_price_html();                              if ( $availability = $product->get_availability() ) {                                 $availability_html = empty( $availability['availability'] ) ? '' : '<p class="stock ' . esc_attr( $availability['class'] ) . '">' . esc_html( $availability['availability'] ) . '</p>';                                 echo apply_filters( 'woocommerce_stock_html', $availability_html, $availability['availability'], $product );                             }                         ?>                     </td>                 </tr>                 <?php             endforeach;              // reset parent grouped product             $post    = $parent_product_post;             $product = wc_get_product( $parent_product_post->id );             setup_postdata( $parent_product_post );         ?>     </tbody> </table>  <input type="hidden" name="add-to-cart" value="<?php echo esc_attr( $product->id ); ?>" />  <?php if ( $quantites_required ) : ?>      <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?>      <button type="submit" class="single_add_to_cart_button button alt"><?php echo $product->single_add_to_cart_text(); ?></button>      <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?>  <?php endif; ?> </form>  <?php do_action( 'woocommerce_after_add_to_cart_form' ); ?> 

once $product defined, can grab single custom product attribute

$product->get_attribute('attribute').

in example, adding simple if statement should work:

foreach ( $grouped_products $product_id ) :     $product = wc_get_product( $product_id );      if ($product->get_attribute( 'contract-type' ) !== 'paym') {         continue;     } 

Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -