Feedzy RSS Feeds is a WordPress plugin (lite/free version) for RSS aggregation, content curation, and autoblogging. It supports importing RSS feeds as WordPress posts, displaying feeds via shortcodes/blocks/widgets, and integrates with Elementor. A separate Pro plugin extends its functionality.
- Text domain:
feedzy-rss-feeds - Min PHP: 7.2 | Min WP: 6.0
- Main bootstrap:
feedzy-rss-feed.php(defines constants, registers autoloader, runs plugin)
npm install # Install JS dependencies
npm run build # Production build all blocks/JS bundles
npm run dev # Watch mode for all blocks (parallel)
npm run build:block # Build just the Gutenberg block
npm run build:loop # Build just the Loop blockcomposer install # Install PHP dependencies
composer run lint # Run PHPCS (WordPress Coding Standards)
composer run format # Auto-fix PHPCS issues
composer run phpstan # Run PHPStan (level 6, includes/ only)# Requires WordPress test suite (MySQL service needed)
bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1:3306
phpunit # Run all unit tests
phpunit tests/test-plugin.php # Run a single test filenpm run wp-env start # Start Docker-based WordPress environment
npm run test:e2e # Run Playwright E2E tests
npm run test:e2e:debug # Run E2E with Playwright UI modenpm run grunt # Run Grunt tasks (readme.txt → readme.md conversion, version bumping)
npm run dist # Build dist package (bin/dist.sh)
npm run lint:js # Lint JS files via wp-scriptsThe plugin uses a custom spl_autoload_register in the bootstrap file. Classes prefixed with Feedzy_Rss_Feeds are resolved by converting underscores to hyphens and lowering the case, then searching these directories in order:
includes/includes/abstract/includes/admin/includes/gutenberg/includes/util/includes/elementor/
Example: Feedzy_Rss_Feeds_Admin → includes/admin/feedzy-rss-feeds-admin.php
Feedzy_Rss_Feeds(includes/feedzy-rss-feeds.php) — Singleton core class. Loads dependencies and registers all hooks via the Loader pattern.Feedzy_Rss_Feeds_Loader(includes/feedzy-rss-feeds-loader.php) — Central hook registration (actions/filters stored in arrays, executed viarun()).Feedzy_Rss_Feeds_Admin_Abstract(includes/abstract/) — Base class for admin functionality including feed fetching, shortcode rendering, and image handling.Feedzy_Rss_Feeds_Admin(includes/admin/feedzy-rss-feeds-admin.php) — Extends abstract. Handles admin UI, post types (feedzy_categories,feedzy_imports), REST routes, settings, shortcode[feedzy-rss].Feedzy_Rss_Feeds_Import(includes/admin/feedzy-rss-feeds-import.php) — Feed-to-post import engine. Manages cron jobs, import post type metaboxes, magic tags.
feedzy_categories— Groups of feed URLs for reuse.feedzy_imports— Import job configurations (feed source → WordPress posts).
Blocks are built with @wordpress/scripts. Each has its own entry point under js/:
js/FeedzyBlock/→build/block/— Main Gutenberg block for displaying feedsjs/FeedzyLoop/→build/loop/— Loop block variantjs/Onboarding/→build/onboarding/— Setup wizardjs/ActionPopup/→build/action-popup/— Action chain popupjs/Conditions/→build/conditions/— Import filter conditions UIjs/FeedBack/→build/feedback/— Feedback promptjs/Review/→build/review/— Review prompt
Legacy JS files (non-bundled) in js/ root: TinyMCE integration, Elementor widget, lazy loading, settings, categories.
The lite plugin checks for Pro via feedzy_is_pro() and FEEDZY_PRO_BASEFILE / FEEDZY_PRO_ABSPATH constants. Many hooks have feedzy_ prefixed filters that Pro extends. The import feature conditionally loads based on feedzy_is_pro(false) or has_filter('feedzy_free_has_import').
- Shortcode:
[feedzy-rss]registered indefine_admin_hooks() - REST API: routes registered via
rest_routeonrest_api_init - Cron:
feedzy_cronaction drives scheduled imports - Logging:
feedzy_logaction →Feedzy_Rss_Feeds_Logclass
- PHPUnit tests:
tests/test-*.phpfiles (prefixed withtest-), bootstrapped bytests/bootstrap.php. Require WP test suite installation. - E2E tests:
tests/e2e/specs/*.spec.jsusing Playwright with@wordpress/e2e-test-utils-playwright. Run againstwp-envDocker environment. - PHPStan stubs:
tests/php/static-analysis-stubs/provides type stubs for static analysis.
- Follows WordPress Coding Standards enforced via PHPCS (
phpcs.xml) - WordPress-VIP-Go rules included
- PHPStan level 6 for
includes/directory - JS linting via
@wordpress/eslint-plugin