# Vendor Library Setup Guide You have two options to include the Google API Client library: ## Option 1: Manual Download (Recommended for Distribution) This is the easiest method and doesn't require Composer. ### Step 1: Download Google API PHP Client 1. Go to: https://github.com/googleapis/google-api-php-client/releases 2. Download the latest release (e.g., `google-api-php-client-2.15.0.zip`) 3. Extract the ZIP file ### Step 2: Copy to Vendor Directory Copy the extracted files into your plugin's `vendor/` directory following this structure: ``` vendor/ ├── autoload.php (already exists in plugin) ├── google/ │ ├── apiclient/ │ │ ├── src/ │ │ │ └── Google/ │ │ │ ├── Client.php │ │ │ ├── Service/ │ │ │ └── ... (all Google API files) │ │ └── ... │ └── apiclient-services/ │ ├── autoload.php │ └── src/ │ └── Google/ │ └── Service/ │ └── ShoppingContent/ │ └── ... (Shopping API files) ├── guzzlehttp/ │ ├── guzzle/ │ │ └── src/ │ ├── psr7/ │ │ └── src/ │ └── promises/ │ └── src/ ├── psr/ │ ├── http-message/src/ │ ├── http-client/src/ │ ├── cache/src/ │ └── log/Psr/Log/ ├── firebase/ │ └── php-jwt/src/ └── monolog/ └── monolog/src/Monolog/ ``` ### Step 3: Quick Copy Instructions If you downloaded the Google API Client via Composer once, you can simply copy the entire vendor directory: ```bash # Run composer install once (on your development machine) composer install # Then copy the entire vendor directory to your plugin # The plugin's custom autoloader will handle everything ``` The vendor directory will be about 10-15 MB, which is perfectly fine for WordPress plugin distribution. ## Option 2: Use Composer (For Development) If you're actively developing the plugin: ```bash cd /path/to/plugin composer install ``` This will: - Download all dependencies - Generate an optimized autoloader - Create `vendor/autoload_real.php` The plugin's autoloader (`vendor/autoload.php`) automatically detects and uses Composer's autoloader if available. ## Verifying Installation After setting up the vendor directory, check that these files exist: 1. `vendor/google/apiclient/src/Google/Client.php` 2. `vendor/google/apiclient-services/src/Google/Service/ShoppingContent.php` 3. `vendor/guzzlehttp/guzzle/src/Client.php` If these files exist, the plugin will work correctly! ## For Plugin Distribution When distributing your plugin (e.g., to clients or WordPress.org): 1. **Include the vendor directory** in your plugin ZIP 2. Users simply upload and activate - no Composer needed 3. The custom autoloader handles everything automatically This is the standard practice for WordPress plugins - most popular plugins include their dependencies rather than requiring Composer. ## Simplified Download Script Want to automate this? Run this in your plugin directory: ```bash #!/bin/bash # Download and setup Google API Client # Install via Composer (easiest way to get all dependencies) composer install --no-dev --optimize-autoloader # Remove Composer development files (optional) rm -rf vendor/bin rm -rf vendor/composer/*.json echo "Google API Client installed successfully!" echo "You can now distribute the plugin with the vendor directory included." ``` ## File Size Note The complete vendor directory with Google API Client and dependencies is approximately: - **Uncompressed**: 10-15 MB - **ZIP compressed**: 2-3 MB This is acceptable for WordPress plugin distribution and much easier than requiring users to run Composer. ## Troubleshooting ### "Google API Client library is missing" error If you see this error in WordPress admin: 1. Check that `vendor/google/apiclient/src/Google/Client.php` exists 2. Verify file permissions (should be readable by web server) 3. Check that the autoloader is being loaded (check plugin main file) ### Class not found errors If you get "Class 'Google_Service_ShoppingContent' not found": 1. Ensure `vendor/google/apiclient-services/` exists 2. Check that Shopping Content service is included in apiclient-services 3. You may need to download the services separately from: https://github.com/googleapis/google-api-php-client-services ## Minimal Installation (Advanced) If you want to reduce file size, you can include only the required services: 1. Install full Google API Client 2. Keep only these directories: - `google/apiclient/` - `google/apiclient-services/src/Google/Service/ShoppingContent/` - `guzzlehttp/` (all) - `psr/` (all) - `firebase/php-jwt/` This reduces the size to ~5 MB while keeping all necessary functionality.