PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.9.22
Shortcodes and extra features for Phlox theme v2.9.22
2.17.22 2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / includes / classes / class-auxels-wc-attribute-nav-menu.php
auxin-elements / includes / classes Last commit date
class-auxels-admin-assets.php 4 years ago class-auxels-archive-menu-links.php 4 years ago class-auxels-envato-elements.php 4 years ago class-auxels-import-parser.php 4 years ago class-auxels-import.php 4 years ago class-auxels-search-post-type.php 4 years ago class-auxels-wc-attribute-nav-menu.php 4 years ago class-auxin-admin-dashboard.php 4 years ago class-auxin-demo-importer.php 4 years ago class-auxin-dependency-sorting.php 4 years ago class-auxin-import.php 4 years ago class-auxin-install.php 4 years ago class-auxin-master-nav-menu-admin.php 4 years ago class-auxin-page-template.php 4 years ago class-auxin-permalink.php 4 years ago class-auxin-plugin-requirements.php 4 years ago class-auxin-post-type-base.php 4 years ago class-auxin-svg-support-allowedattributes.php 7 years ago class-auxin-svg-support-allowedtags.php 7 years ago class-auxin-svg-support.php 4 years ago class-auxin-walker-nav-menu-back.php 4 years ago class-auxin-welcome-sections.php 4 years ago class-auxin-welcome.php 4 years ago class-auxin-whitelabel.php 4 years ago class-auxin-widget-indie.php 4 years ago class-auxin-widget-shortcode-map.php 4 years ago class-auxin-widget.php 4 years ago
class-auxels-wc-attribute-nav-menu.php
174 lines
1 <?php
2 /**
3 * Woocommerce attributes nav menu Class.
4 *
5 *
6 * @package Auxin
7 * @license LICENSE.txt
8 * @author averta
9 * @link http://phlox.pro/
10 * @copyright (c) 2010-2022 averta
11 */
12
13 // no direct access allowed
14 if ( ! defined('ABSPATH') ) {
15 die();
16 }
17
18 /**
19 * Class to add woocommerce attributes filter as nav menu item
20 */
21 class Auxels_WC_Attribute_Nav_Menu {
22
23 /**
24 * Instance of this class.
25 *
26 * @var object
27 */
28 protected static $instance = null;
29
30 /**
31 * Return an instance of this class.
32 *
33 * @return object A single instance of this class.
34 */
35 public static function get_instance() {
36
37 // If the single instance hasn't been set, set it now.
38 if ( null == self::$instance ) {
39 self::$instance = new self;
40 }
41 return self::$instance;
42 }
43
44 /**
45 * __construct
46 */
47 public function __construct() {
48
49 if ( ! class_exists( 'WooCommerce') ) {
50 return;
51 }
52
53 add_filter( 'customize_nav_menu_available_item_types', [ $this, 'register_customize_nav_menu_item_types'] );
54 add_filter( 'customize_nav_menu_available_items', [ $this, 'register_customize_nav_menu_items' ], 11, 4 );
55 add_action( 'admin_head-nav-menus.php', [ $this, 'add_nav_menu_meta_boxes' ] );
56 }
57
58 /**
59 * Register customize new nav menu item types.
60 *
61 * @param array $item_types Menu item types.
62 * @return array
63 */
64 public function register_customize_nav_menu_item_types( $item_types ) {
65 $item_types[] = array(
66 'title' => __( 'WooCommerce Attributes', 'auxin-elements' ),
67 'type_label' => __( 'WooCommerce Attributes', 'auxin-elements' ),
68 'type' => 'aux_woocommerce_attribute',
69 'object' => 'aux_woocommerce_attribute',
70 );
71
72 return $item_types;
73 }
74
75
76 /**
77 * Register woocommerce attributes to customize nav menu items.
78 *
79 * @param array $items List of nav menu items.
80 * @param string $type Nav menu type.
81 * @param string $object Nav menu object.
82 * @param integer $page Page number.
83 * @return array
84 */
85 public function register_customize_nav_menu_items( $items = array(), $type = '', $object = '', $page = 0 ) {
86 if ( 'aux_woocommerce_attribute' !== $object ) {
87 return $items;
88 }
89
90 // Don't allow pagination since all items are loaded at once.
91 if ( 0 < $page ) {
92 return $items;
93 }
94
95 $taxonomies = [];
96 $attr_tax = wc_get_attribute_taxonomies();
97
98 foreach( $attr_tax as $tax ) {
99 $taxonomies[ $tax->attribute_name ] = $tax->attribute_label;
100 }
101
102 foreach ( $taxonomies as $slug => $label ) {
103 $terms = get_terms( 'pa_' . $slug, array(
104 'hide_empty' => false,
105 ) );
106
107 foreach ( $terms as $term ) {
108 $items[] = array(
109 'id' => $term->slug,
110 'title' => $term->name,
111 'type_label' => __( 'Attribute', 'auxin-elements' ),
112 'url' => esc_url( get_permalink( woocommerce_get_page_id( 'shop' ) ) . '?filter_' . $slug . '=' . $term->slug ),
113 );
114 }
115 }
116
117 return $items;
118 }
119
120 public function add_nav_menu_meta_boxes() {
121 add_meta_box( 'aux_woocommerce_attribute_nav_link', __( 'WooCommerce attributes', 'auxin-elements' ), [ $this, 'woocommerce_attr_nav_menu_links' ], 'nav-menus', 'side', 'low' );
122 }
123
124 public function woocommerce_attr_nav_menu_links() {
125
126 $taxonomies = [];
127 $attr_tax = wc_get_attribute_taxonomies();
128
129 foreach( $attr_tax as $tax ) {
130 $taxonomies[ $tax->attribute_name ] = $tax->attribute_label;
131 }
132
133 ?>
134 <div id="posttype-woocommerce-attr" class="posttypediv">
135 <div id="tabs-panel-woocommerce-attr" class="tabs-panel tabs-panel-active">
136 <ul id="woocommerce-attr-checklist" class="categorychecklist form-no-clear">
137 <?php
138 $i = -1;
139 foreach ( $taxonomies as $slug => $label ) :
140 $terms = get_terms( 'pa_' . $slug, array(
141 'hide_empty' => false,
142 ) );
143 foreach ( $terms as $term ) {
144 ?>
145 <li>
146 <label class="menu-item-title">
147 <input type="checkbox" class="menu-item-checkbox" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-object-id]" value="<?php echo esc_attr( $i ); ?>" /> <?php echo esc_html( $term->name ); ?>
148 </label>
149 <input type="hidden" class="menu-item-type" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-type]" value="custom" />
150 <input type="hidden" class="menu-item-title" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-title]" value="<?php echo esc_attr( $term->name ); ?>" />
151 <input type="hidden" class="menu-item-url" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-url]" value="<?php echo esc_url( get_permalink( woocommerce_get_page_id( 'shop' ) ) . '?filter_' . $slug . '=' . $term->slug ); ?>" />
152 <input type="hidden" class="menu-item-classes" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-classes]" />
153 </li>
154 <?php
155 }
156 $i--;
157 endforeach;
158 ?>
159 </ul>
160 </div>
161 <p class="button-controls">
162 <span class="list-controls">
163 <a href="<?php echo esc_url( admin_url( 'nav-menus.php?page-tab=all&selectall=1#posttype-woocommerce-attr' ) ); ?>" class="select-all"><?php esc_html_e( 'Select all', 'auxin-elements' ); ?></a>
164 </span>
165 <span class="add-to-menu">
166 <button type="submit" class="button-secondary submit-add-to-menu right" value="<?php esc_attr_e( 'Add to menu', 'auxin-elements' ); ?>" name="add-post-type-menu-item" id="submit-posttype-woocommerce-attr"><?php esc_html_e( 'Add to menu', 'auxin-elements' ); ?></button>
167 <span class="spinner"></span>
168 </span>
169 </p>
170 </div>
171 <?php
172 }
173 }
174 ?>