PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.17.14
Shortcodes and extra features for Phlox theme v2.17.14
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 1 year ago class-auxels-archive-menu-links.php 1 year ago class-auxels-envato-elements.php 1 year ago class-auxels-import-parser.php 3 years ago class-auxels-import.php 3 years ago class-auxels-search-post-type.php 6 months ago class-auxels-wc-attribute-nav-menu.php 1 year ago class-auxin-admin-dashboard.php 1 year ago class-auxin-demo-importer.php 6 months ago class-auxin-dependency-sorting.php 3 years ago class-auxin-import.php 1 year ago class-auxin-install.php 1 year ago class-auxin-master-nav-menu-admin.php 1 year ago class-auxin-page-template.php 1 year ago class-auxin-permalink.php 1 year ago class-auxin-plugin-requirements.php 3 years ago class-auxin-post-type-base.php 1 year ago class-auxin-svg-support-allowedattributes.php 7 years ago class-auxin-svg-support-allowedtags.php 7 years ago class-auxin-svg-support.php 1 year ago class-auxin-walker-nav-menu-back.php 1 year ago class-auxin-welcome-sections.php 1 year ago class-auxin-welcome.php 6 months ago class-auxin-whitelabel.php 3 years ago class-auxin-widget-indie.php 1 year ago class-auxin-widget-shortcode-map.php 11 months ago class-auxin-widget.php 1 year ago
class-auxels-wc-attribute-nav-menu.php
176 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-2025 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( array(
104 'taxonomy' => 'pa_' . $slug,
105 'hide_empty' => false,
106 ) );
107
108 foreach ( $terms as $term ) {
109 $items[] = array(
110 'id' => $term->slug,
111 'title' => $term->name,
112 'type_label' => __( 'Attribute', 'auxin-elements' ),
113 'url' => esc_url( get_permalink( woocommerce_get_page_id( 'shop' ) ) . '?filter_' . $slug . '=' . $term->slug ),
114 );
115 }
116 }
117
118 return $items;
119 }
120
121 public function add_nav_menu_meta_boxes() {
122 add_meta_box( 'aux_woocommerce_attribute_nav_link', __( 'WooCommerce attributes', 'auxin-elements' ), [ $this, 'woocommerce_attr_nav_menu_links' ], 'nav-menus', 'side', 'low' );
123 }
124
125 public function woocommerce_attr_nav_menu_links() {
126
127 $taxonomies = [];
128 $attr_tax = wc_get_attribute_taxonomies();
129
130 foreach( $attr_tax as $tax ) {
131 $taxonomies[ $tax->attribute_name ] = $tax->attribute_label;
132 }
133
134 ?>
135 <div id="posttype-woocommerce-attr" class="posttypediv">
136 <div id="tabs-panel-woocommerce-attr" class="tabs-panel tabs-panel-active">
137 <ul id="woocommerce-attr-checklist" class="categorychecklist form-no-clear">
138 <?php
139 $i = -1;
140 foreach ( $taxonomies as $slug => $label ) :
141 $terms = get_terms( array(
142 'taxonomy' => 'pa_' . $slug,
143 'hide_empty' => false,
144 ) );
145 foreach ( $terms as $term ) {
146 ?>
147 <li>
148 <label class="menu-item-title">
149 <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 ); ?>
150 </label>
151 <input type="hidden" class="menu-item-type" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-type]" value="custom" />
152 <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 ); ?>" />
153 <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 ); ?>" />
154 <input type="hidden" class="menu-item-classes" name="menu-item[<?php echo esc_attr( $i ); ?>][menu-item-classes]" />
155 </li>
156 <?php
157 }
158 $i--;
159 endforeach;
160 ?>
161 </ul>
162 </div>
163 <p class="button-controls">
164 <span class="list-controls">
165 <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>
166 </span>
167 <span class="add-to-menu">
168 <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>
169 <span class="spinner"></span>
170 </span>
171 </p>
172 </div>
173 <?php
174 }
175 }
176 ?>