elements_manager->add_category( 'addonnest-elementor', [ 'title' => 'AddonNest For Elementor', 'icon' => 'apps' ], 1 ); } add_action( 'elementor/init', 'addonnest_elementor_init' ); /** * Elementor Addons List * */ function addonnest_add_new_elements() { $widget_files = array_filter(glob(ADDONNEST_DIR_PATH . 'includes/elementor/widgets/*.php')); if (count($widget_files) > 0) { foreach ($widget_files as $widget_file) { include_once $widget_file; // Try to guess the class name based on file name $class_base = basename($widget_file, '.php'); $class_name = 'AddonNest_' . str_replace(' ', '', ucwords(str_replace('-', ' ', $class_base))) . '_Widget'; if (class_exists($class_name)) { \Elementor\Plugin::instance()->widgets_manager->register_widget_type(new $class_name()); } } } } add_action('elementor/widgets/widgets_registered', 'addonnest_add_new_elements'); if ( ! function_exists( 'addonnest_all_category_list' ) ) { /** * Retrieves a list of categories for the specified taxonomy. * * @param string $category Taxonomy name. * @return array Associative array of category slugs and names. */ function addonnest_all_category_list( $category ) { global $wpdb; $prepared_query = $wpdb->prepare( " SELECT t.term_id, t.name, t.slug FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s ", $category ); $results = $wpdb->get_results( $prepared_query ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching $cat_list = array( 'allpost' => esc_html__( 'All Categories', 'addonnest' ), ); if ( is_array( $results ) && ! empty( $results ) ) { foreach ( $results as $term ) { $cat_list[ $term->slug ] = esc_html( $term->name ); } } return $cat_list; } }