EVOLUTION-MANAGER
Edit File: structure-wc-category-page.php
<?php // Remove Default links remove_action( 'woocommerce_before_shop_loop_item','woocommerce_template_loop_product_link_open', 10); remove_action( 'woocommerce_after_shop_loop_item','woocommerce_template_loop_product_link_close', 5); /* Move Sale Flash */ remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10); add_action( 'woocommerce_before_shop_loop_item', 'woocommerce_show_product_loop_sale_flash', 10); /** * Gets products per page count from theme settings. */ function flatsome_product_pr_page() { return get_theme_mod( 'products_pr_page', 12 ); } add_filter( 'loop_shop_per_page', 'flatsome_product_pr_page', 20 ); /** * Gets base desktop row count from theme settings. */ function flatsome_category_row_count() { return get_theme_mod( 'category_row_count', 3 ); } add_filter( 'loop_shop_columns', 'flatsome_category_row_count', 20 ); /* Set WooCommerce product loop classes */ function flatsome_product_row_classes($cols = null){ $classes = array('row','row-small'); $category_grid_style = flatsome_option('category_grid_style'); if($category_grid_style == 'masonry'){ wp_enqueue_script('flatsome-masonry-js'); $classes[] = 'row-masonry has-packery'; } if(get_theme_mod('category_grid_style') == 'list'){ $classes[] = 'has-box-vertical'; } $columns = flatsome_option('category_row_count'); if($cols) $columns = $cols; if ( is_cart() ) $columns = apply_filters( 'woocommerce_cross_sells_columns', 4 ); $classes[] = 'large-columns-'.$columns; $classes[] = 'medium-columns-'.flatsome_option('category_row_count_tablet'); $classes[] = 'small-columns-'.flatsome_option('category_row_count_mobile'); $shadow = flatsome_option('category_shadow'); $shadow_hover = flatsome_option('category_shadow_hover'); if($shadow || $shadow_hover) $classes[] = 'has-shadow'; if($shadow) $classes[] = 'row-box-shadow-'.$shadow; if($shadow_hover) $classes[] = 'row-box-shadow-'.$shadow_hover.'-hover'; // Custom heights if(get_theme_mod('category_force_image_height')) { $classes[] = 'has-equal-box-heights'; } if ( get_theme_mod( 'equalize_product_box' ) ) { $classes[] = 'equalize-box'; } return implode(' ', $classes); } function flatsome_products_footer_content(){ if(is_product_category() || is_product_tag()){ $queried_object = get_queried_object(); $content = get_term_meta($queried_object->term_id, 'cat_meta'); if(!empty($content[0]['cat_footer'])){ echo '<hr/>'; echo do_shortcode($content[0]['cat_footer']); } } } add_action('flatsome_products_after','flatsome_products_footer_content'); /* Add Custom Meta to Category */ if(is_admin()){ if(function_exists('get_term_meta')){ function top_text_taxonomy_edit_meta_field($term) { // put the term ID into a variable $t_id = $term->term_id; // retrieve the existing value(s) for this meta field. This returns an array $term_meta = get_term_meta($t_id,'cat_meta'); if(!$term_meta){$term_meta = add_term_meta($t_id, 'cat_meta', '');} ?> <tr class="form-field"> <th scope="row" valign="top"><label for="term_meta[cat_header]"><?php _e( 'Top Content', 'flatsome' ); ?></label></th> <td> <?php $content = esc_attr( isset($term_meta[0]['cat_header']) ) ? esc_attr( $term_meta[0]['cat_header'] ) : ''; echo '<textarea id="term_meta[cat_header]" name="term_meta[cat_header]">'.$content.'</textarea>'; ?> <p class="description"><?php _e( 'Enter a value for this field. Shortcodes are allowed. This will be displayed at top of the category.','flatsome' ); ?></p> </td> </tr> <?php } add_action( 'product_cat_edit_form_fields', 'top_text_taxonomy_edit_meta_field', 10, 2 ); add_action( 'product_tag_edit_form_fields', 'top_text_taxonomy_edit_meta_field', 10, 2 ); /* ADD CUSTOM META BOX TO CATEGORY PAGES */ function bottom_text_taxonomy_edit_meta_field($term) { // put the term ID into a variable $t_id = $term->term_id; // retrieve the existing value(s) for this meta field. This returns an array $term_meta = get_term_meta($t_id,'cat_meta'); if(!$term_meta){$term_meta = add_term_meta($t_id, 'cat_meta', '');} ?> <tr class="form-field"> <th scope="row" valign="top"><label for="term_meta[cat_footer]"><?php _e( 'Bottom Content', 'flatsome' ); ?></label></th> <td> <?php $content = isset($term_meta[0]['cat_footer']) ? esc_attr( $term_meta[0]['cat_footer'] ) : ''; echo '<textarea id="term_meta[cat_footer]" name="term_meta[cat_footer]">'.$content.'</textarea>'; ?> <p class="description"><?php _e( 'Enter a value for this field. Shortcodes are allowed. This will be displayed at bottom of the category.','flatsome' ); ?></p> </td> </tr> <?php } add_action( 'product_cat_edit_form_fields', 'bottom_text_taxonomy_edit_meta_field', 10, 2 ); add_action( 'product_tag_edit_form_fields', 'bottom_text_taxonomy_edit_meta_field', 10, 2 ); function flatsome_custom_product_page_taxonomy_edit_meta_field( $term ) { $t_id = $term->term_id; // retrieve the existing value(s) for this meta field. This returns an array $term_meta = get_term_meta( $t_id, 'cat_meta' ); if ( ! $term_meta ) { $term_meta = add_term_meta( $t_id, 'cat_meta', '' ); } ?> <tr class="form-field"> <th scope="row" valign="top"><label for="term_meta[cat_product_block]"><?php _e( 'Custom product layout', 'flatsome' ); ?></label></th> <td> <?php $selected = esc_attr( isset( $term_meta[0]['cat_product_block'] ) ) ? esc_attr( $term_meta[0]['cat_product_block'] ) : 0; wp_dropdown_pages( array( 'id' => 'term_meta[cat_product_block]', 'name' => 'term_meta[cat_product_block]', 'post_type' => 'blocks', 'show_option_none' => '-- None --', 'selected' => $selected, ) ); ?> <p class="description"><?php _e( 'Choose a custom product block layout for this category.', 'flatsome' ); ?></p> </td> </tr> <?php } add_action( 'product_cat_edit_form_fields', 'flatsome_custom_product_page_taxonomy_edit_meta_field', 10 ); /* SAVE CUSTOM META*/ function fl_save_taxonomy_custom_meta( $term_id ) { if ( isset( $_POST['term_meta'] ) ) { $t_id = $term_id; $cat_keys = array_keys( $_POST['term_meta'] ); foreach ( $cat_keys as $key ) { if ( isset ( $_POST['term_meta'][$key] ) ) { $term_meta[$key] = $_POST['term_meta'][$key]; } } // Save the option array. update_term_meta($term_id, 'cat_meta', $term_meta); } } add_action( 'edited_product_cat', 'fl_save_taxonomy_custom_meta', 10, 2 ); add_action( 'edited_product_tag', 'fl_save_taxonomy_custom_meta', 10, 2 ); } } // is_admin