{"id":39375012,"url":"https://github.com/codician-team/wp-puller","last_synced_at":"2026-01-22T18:02:54.545Z","repository":{"id":332949819,"uuid":"1135553249","full_name":"codician-team/wp-puller","owner":"codician-team","description":"👉 WordPress Git Deployments with WP Puller - Auto Theme Update, Private and Public Repositories","archived":false,"fork":false,"pushed_at":"2026-01-17T10:18:52.000Z","size":71,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-20T21:58:48.817Z","etag":null,"topics":["deployment","deployment-automation","git","gitupdate","plugin","pusher","wordpress","wordpress-api","wordpress-php-library","wordpress-plugin","wordpress-theme"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codician-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-16T09:04:07.000Z","updated_at":"2026-01-20T15:52:08.000Z","dependencies_parsed_at":"2026-01-19T14:01:48.454Z","dependency_job_id":null,"html_url":"https://github.com/codician-team/wp-puller","commit_stats":null,"previous_names":["codician-team/wp-puller"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/codician-team/wp-puller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codician-team%2Fwp-puller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codician-team%2Fwp-puller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codician-team%2Fwp-puller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codician-team%2Fwp-puller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codician-team","download_url":"https://codeload.github.com/codician-team/wp-puller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codician-team%2Fwp-puller/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28635926,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T15:01:31.228Z","status":"ssl_error","status_checked_at":"2026-01-21T14:42:58.942Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deployment","deployment-automation","git","gitupdate","plugin","pusher","wordpress","wordpress-api","wordpress-php-library","wordpress-plugin","wordpress-theme"],"created_at":"2026-01-18T02:54:39.860Z","updated_at":"2026-01-21T16:00:35.406Z","avatar_url":"https://github.com/codician-team.png","language":"PHP","readme":"# WP Puller\n\nAuto-update WordPress themes from GitHub. Free and open source.\n\n[![WordPress 5.0+](https://img.shields.io/badge/WordPress-5.0%2B-0073aa.svg)](https://wordpress.org/)\n[![PHP 7.4+](https://img.shields.io/badge/PHP-7.4%2B-777bb4.svg)](https://php.net/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n---\n\nPush to GitHub → Theme updates automatically. No FTP, no manual uploads.\n\nWP Puller connects your WordPress theme to a GitHub repository. When you push changes, a webhook triggers and your live site updates within seconds. Works with both public and private repositories.\n\n**This is the free alternative to WP Pusher and Git Updater.**\n\n---\n\n## What It Does\n\n- **Webhook-based deploys** - Push to GitHub, site updates automatically\n- **Private repo support** - Connect with a GitHub Personal Access Token\n- **Automatic backups** - Snapshot before every update, one-click restore\n- **Subdirectory themes** - Theme doesn't need to be at repo root\n- **Branch selection** - Deploy from main, staging, production, or any branch\n\n---\n\n## Install\n\n1. Download `wp-puller.zip` from [Releases](../../releases) or directly .zip the \"wp-puller\" folder in repository.\n2. WordPress admin → Plugins → Add New → Upload Plugin\n3. Upload ZIP, activate\n\nOr manually upload the `wp-puller` folder to `/wp-content/plugins/`.\n\n---\n\n## Setup\n\n### Connect a Repository\n\n1. Go to **WP Puller** in the admin sidebar\n2. Enter your GitHub repo URL: `https://github.com/you/your-theme`\n3. Select branch (usually `main`)\n4. If your theme is in a subdirectory, enter the path (e.g., `theme/starter-theme`)\n5. Click **Test Connection**, then **Save Settings**\n6. Refreshing the page might be needed if you do not see the **Connected** indicator.\n\n### Set Up Webhook (for auto-updates)\n\n1. Copy the **Payload URL** and **Secret** from WP Puller\n2. GitHub repo → Settings → Webhooks → Add webhook\n3. Paste the URL and secret\n4. Content type: `application/json`\n5. Events: Just the push event\n6. Save\n\nNow every push to your branch triggers an automatic update.\n\n### Manual Updates\n\nDon't want webhooks? Click **Check for Updates** then **Update Now** whenever you want to pull the latest.\n\n---\n\n## Private Repositories\n\nFor private repos, you need a GitHub Personal Access Token:\n\n### Fine-grained token (recommended)\n\n1. GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens\n2. Generate new token\n3. Select only the repository you need\n4. Permissions: **Contents** (read) and **Metadata** (read)\n5. Generate, copy, paste into WP Puller\n\n### Classic token\n\n1. GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)\n2. Generate new token\n3. Select `repo` scope\n4. Generate, copy, paste into WP Puller\n\nYour token is encrypted with AES-256-CBC before storage.\n\n---\n\n## Repository Structure\n\nTheme files can be at the root:\n\n```\nyour-repo/\n├── style.css\n├── functions.php\n├── index.php\n└── ...\n```\n\nOr in a subdirectory (set \"Theme Path\" in settings):\n\n```\nyour-repo/\n├── other-stuff/\n└── theme/starter-theme/    ← Theme Path: theme/starter-theme\n    ├── style.css\n    ├── functions.php\n    └── ...\n```\n\nThe theme needs a valid `style.css` with a `Theme Name` header.\n\n---\n\n## FAQ\n\n**Is this actually free?**\nYes. MIT license, no premium tier, no feature gates.\n\n**How does it compare to WP Pusher?**\nSame core idea—deploy WordPress themes from GitHub. WP Puller is free and open source. WP Pusher has more features (plugins, GitLab, Bitbucket) but costs money.\n\n**What if an update breaks my site?**\nRestore from the Backups section. WP Puller keeps automatic backups before every update.\n\n**Can I use this for plugins?**\nNot yet. Theme-only for now.\n\n**Does it work with GitLab/Bitbucket?**\nGitHub only.\n\n**Is my token secure?**\nEncrypted at rest using your WordPress security salts. Never logged or transmitted except to GitHub.\n\n---\n\n## For Developers\n\n### Hooks\n\n```php\n// After successful update\ndo_action( 'wp_puller_theme_updated', $commit_data, $source );\n\n// After backup restore\ndo_action( 'wp_puller_theme_restored', $backup_name );\n\n// On init\ndo_action( 'wp_puller_init' );\n```\n\n### Security\n\n- Nonce verification on all AJAX\n- `manage_options` capability required\n- Webhook signatures verified (HMAC SHA-256)\n- Tokens encrypted with AES-256-CBC\n- All file operations via WP_Filesystem\n\n---\n\n## Requirements\n\n- WordPress 5.0+\n- PHP 7.4+\n- OpenSSL extension (for token encryption)\n\n---\n\n## Contributing\n\nIssues and PRs welcome. Fork it, make changes, submit a PR.\n\n---\n\n## License\n\nMIT. Do whatever you want with it.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodician-team%2Fwp-puller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodician-team%2Fwp-puller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodician-team%2Fwp-puller/lists"}