* @link http://www.wpexplorer.com/woocommerce-compatible-theme/ */ /** * Alter WooCommerce shop posts per page. * * @param integer $cols is columns to use. */ function canuck_woo_posts_per_page( $cols ) { return 12; } add_filter( 'loop_shop_per_page', 'canuck_woo_posts_per_page' ); /** * Alter shop columns. * * @param integer $columns is columns to use. */ function canuck_woo_shop_columns( $columns ) { return 4; } add_filter( 'loop_shop_columns', 'canuck_woo_shop_columns' ); /** * Add correct body class for shop columns. * * @param string $classes are css classes. */ function canuck_woo_shop_columns_body_class( $classes ) { if ( is_shop() || is_product_category() || is_product_tag() ) { $classes[] = 'columns-4'; } return $classes; } add_filter( 'body_class', 'canuck_woo_shop_columns_body_class' ); /** * Change pagination pointers. * * @param array $args is array of html. */ function canuck_woo_pagination_args( $args ) { $args['prev_text'] = ''; $args['next_text'] = ''; return $args; } add_filter( 'woocommerce_pagination_args', 'canuck_woo_pagination_args' ); /** * Change sale text. */ function canuck_woo_sale_flash() { return '' . esc_html__( 'Sale', 'canuck' ) . ''; } add_filter( 'woocommerce_sale_flash', 'canuck_woo_sale_flash' ); /** * Set related products to display 4 products. * * @param array $args is array of data. */ function canuck_woo_related_posts_per_page( $args ) { $args['posts_per_page'] = 8; return $args; } add_filter( 'woocommerce_output_related_products_args', 'canuck_woo_related_posts_per_page' ); /** * Filter up-sells columns * * @param integer $columns is columns to use. */ function canuck_woo_single_loops_columns( $columns ) { return 4; } add_filter( 'woocommerce_up_sells_columns', 'canuck_woo_single_loops_columns' ); /** * Filter related args. * * @param array $args is array of data. */ function canuck_woo_related_columns( $args ) { $args['columns'] = 4; return $args; } add_filter( 'woocommerce_output_related_products_args', 'canuck_woo_related_columns', 10 ); /** * Filter body classes to add column class. * * @param string $classes are css classes. */ function canuck_woo_single_loops_columns_body_class( $classes ) { if ( is_singular( 'product' ) ) { $classes[] = 'columns-4'; } return $classes; } add_filter( 'body_class', 'canuck_woo_single_loops_columns_body_class' ); /** * Add the cart link to menu * * @param string $items contains lists html.. * @param array $args is array of data. */ function canuck_add_menu_cart_item_to_menus( $items, $args ) { // Make sure your change to your Menu location !!!! if ( 'canuck_primary' === $args->theme_location ) { $css_class = 'menu-item menu-item-type-cart menu-item-type-woocommerce-cart'; // phpcs:ignore if ( is_cart() ) { $css_class .= ' current-menu-item'; } $items .= '
  • '; $items .= canuck_menu_cart_item(); $items .= '
  • '; } return $items; } add_filter( 'wp_nav_menu_items', 'canuck_add_menu_cart_item_to_menus', 10, 2 ); /** * Function returns the main menu cart link */ function canuck_menu_cart_item() { $output = ''; $cart_count = WC()->cart->cart_contents_count; $css_class = 'canuck-menu-cart-total canuck-cart-total-' . intval( $cart_count ); // phpcs:ignore if ( $cart_count ) { $url = wc_get_cart_url(); } else { $url = wc_get_page_permalink( 'shop' ); } $html = WC()->cart->get_cart_total(); $html = str_replace( 'amount', '', $html ); $output .= ''; $output .= ''; $output .= wp_kses_post( $html ); $output .= ''; return $output; } /** * Update cart link with AJAX. * * @param array $fragments is array of data. */ function canuck_main_menu_cart_link_fragments( $fragments ) { $fragments['.canuck-menu-cart-total'] = canuck_menu_cart_item(); return $fragments; } add_filter( 'woocommerce_add_to_cart_fragments', 'canuck_main_menu_cart_link_fragments' ); /** * Set up layout options for the shop page */ function canuck_woo_shop_options() { global $wp_customize; // Add panel. $wp_customize->add_panel( 'canuck_woo', array( 'priority' => 9, 'capability' => 'edit_theme_options', 'title' => esc_html__( 'Canuck WooCommerce Options', 'canuck' ), 'description' => esc_html__( 'Theme specific options when WooCommerce is installed.', 'canuck' ), ) ); // Add sections in panel. $wp_customize->add_section( 'canuck_shop_page', array( 'priority' => 1, 'capability' => 'edit_theme_options', 'title' => esc_html__( 'WooCommerce Shop Page Layouts', 'canuck' ), 'description' => esc_html__( 'Pick the layout you want. Sidebars will be in the Appearance->Widgets Panel.', 'canuck' ), 'panel' => 'canuck_woo', ) ); $wp_customize->add_setting( 'canuck_shop_page_layout', array( 'default' => 'right_sidebar', 'capability' => 'edit_theme_options', 'transport' => 'refresh', 'sanitize_callback' => 'sanitize_text_field', ) ); $wp_customize->add_control( new Canuck_Custom_Radio_Image_Control( $wp_customize, 'canuck_shop_page_layout', array( 'label' => esc_html__( 'Shop Page Layout', 'canuck' ), 'section' => 'canuck_shop_page', 'settings' => 'canuck_shop_page_layout', 'type' => 'radio_image', 'description' => esc_html__( 'Select a layout option for your shop page.', 'canuck' ), 'priority' => 1, 'choices' => canuck_page_layout_choices(), ) ) ); $wp_customize->add_setting( 'canuck_shop_page_title', array( 'default' => esc_html__( 'Shop Products', 'canuck' ), 'capability' => 'edit_theme_options', 'transport' => 'refresh', 'sanitize_callback' => 'sanitize_text_field', ) ); $wp_customize->add_control( 'canuck_shop_page_title', array( 'label' => esc_html__( 'Shop Page Layout', 'canuck' ), 'section' => 'canuck_shop_page', 'settings' => 'canuck_shop_page_title', 'type' => 'text', 'description' => esc_html__( 'Input a title for your Shop Page, no html allowed.', 'canuck' ), 'priority' => 2, ) ); } add_action( 'customize_register', 'canuck_woo_shop_options' );