{"id":19107816,"url":"https://github.com/alleyinteractive/wp-newsletter-builder","last_synced_at":"2026-01-26T08:08:57.046Z","repository":{"id":200030164,"uuid":"704668122","full_name":"alleyinteractive/wp-newsletter-builder","owner":"alleyinteractive","description":"WP Newsletter Builder","archived":false,"fork":false,"pushed_at":"2026-01-17T14:16:47.000Z","size":15949,"stargazers_count":6,"open_issues_count":26,"forks_count":1,"subscribers_count":18,"default_branch":"develop","last_synced_at":"2026-01-18T00:27:32.524Z","etag":null,"topics":["wordpress","wordpress-plugin"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alleyinteractive.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-10-13T19:20:35.000Z","updated_at":"2026-01-17T14:16:50.000Z","dependencies_parsed_at":"2023-12-04T23:53:54.962Z","dependency_job_id":"f15cfa9f-01fc-4299-a123-20ecfdfe20dc","html_url":"https://github.com/alleyinteractive/wp-newsletter-builder","commit_stats":null,"previous_names":["alleyinteractive/wp-newsletter-builder"],"tags_count":43,"template":false,"template_full_name":"alleyinteractive/create-wordpress-plugin","purl":"pkg:github/alleyinteractive/wp-newsletter-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alleyinteractive%2Fwp-newsletter-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alleyinteractive%2Fwp-newsletter-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alleyinteractive%2Fwp-newsletter-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alleyinteractive%2Fwp-newsletter-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alleyinteractive","download_url":"https://codeload.github.com/alleyinteractive/wp-newsletter-builder/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alleyinteractive%2Fwp-newsletter-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28770196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T07:45:00.504Z","status":"ssl_error","status_checked_at":"2026-01-26T07:45:00.070Z","response_time":59,"last_error":"SSL_read: 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":["wordpress","wordpress-plugin"],"created_at":"2024-11-09T04:14:03.542Z","updated_at":"2026-01-26T08:08:57.029Z","avatar_url":"https://github.com/alleyinteractive.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Newsletter Builder\n\nContributors: alleyinteractive\n\nTags: alleyinteractive, wp-newsletter-builder\n\nStable tag: 0.3.35\n\nRequires at least: 6.2\n\nTested up to: 6.4.1\n\nRequires PHP: 8.0\n\nLicense: GPL v2 or later\n\n[![Coding Standards](https://github.com/alleyinteractive/wp-newsletter-builder/actions/workflows/coding-standards.yml/badge.svg)](https://github.com/alleyinteractive/wp-newsletter-builder/actions/workflows/coding-standards.yml)\n[![Testing Suite](https://github.com/alleyinteractive/wp-newsletter-builder/actions/workflows/unit-test.yml/badge.svg)](https://github.com/alleyinteractive/wp-newsletter-builder/actions/workflows/unit-test.yml)\n\nInterface to manage email newsletters. Creates a Custom Post Type.\n\n## Installation\n\nYou can install the package via composer:\n\n```bash\ncomposer require alleyinteractive/wp-newsletter-builder\n```\n\n## Usage\n\nActivate the plugin in WordPress and use it like so:\n\n```php\n$plugin = WP_Newsletter_Builder\\WP_Newsletter_Builder\\WP_Newsletter_Builder();\n$plugin-\u003eperform_magic();\n```\n### Enabling an Email Provider\n\nThe plugin supports multiple email providers. To enable an email provider, add the following code as a plugin or function in your theme  `wp-newsletter-builder-PROVIDER.php`:\n\nThis decision was made so that only developers can switch email providers (but it may be that we want to create a settings page for this in the future.)\n\n```php\n\u003c?php\n/**\n * Plugin Name: PROVIDER for WP Newsletter Builder\n * Description: Plugin to enable PROVIDER as an email provider for WP Newsletter Builder.\n * Version: 0.1.0\n * Author: Alley\n *\n * Text Domain: newsletter-testing\n * Domain Path: /languages/\n *\n * @package newsletter-testing\n */\nadd_filter( 'wp_newsletter_builder_selected_provider',\n\tfn( $provider ) =\u003e 'WP_Newsletter_Builder\\Email_Providers\\PROVIDER'\n);\n```\n### Filtering Post Types Available in the Post Picker\n\nThe plugin allows filtering of post types available in the Gutenberg post picker. The post picker appears in the `wp-newsletter-builder/post` block as a single post picker and in the `wp-newsletter-builder/section` block as a multiple post picker.\n\nFor example, to allow a custom `podcast` post type to appear in the post picker, along with the default `post` post type:\n\n```php\nadd_filter( 'wp_newsletter_builder_allowed_post_types',\n  function( array $allowed_post_types ) {\n    $allowed_post_types[] = 'podcast';\n    return $allowed_post_types;\n  }\n);\n```\n\n## Testing\n\nRun `npm run test` to run Jest tests against JavaScript files. Run\n`npm run test:watch` to keep the test runner open and watching for changes.\n\nRun `npm run lint` to run ESLint against all JavaScript files. Linting will also\nhappen when running development or production builds.\n\nRun `composer test` to run tests against PHPUnit and the PHP code in the plugin.\n\n### The `entries` directory and entry points\n\nAll directories created in the `entries` directory can serve as entry points and will be compiled with [@wordpress/scripts](https://github.com/WordPress/gutenberg/blob/trunk/packages/scripts/README.md#scripts) into the `build` directory with an accompanied `index.asset.php` asset map.\n\n#### Enqueuing Entry Points\n\nYou can also include an `index.php` file in the entry point directory for enqueueing or registering a script. This file will then be moved to the build directory and will be auto-loaded with the `load_scripts()` function in the `functions.php` file. Alternatively, if a script is to be enqueued elsewhere there are helper functions in the `src/assets.php` file for getting the assets.\n\n### Scaffold a block with `create-block`\n\nUse the `create-block` command to create custom blocks with [`@wordpress/create-block`](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-create-block/) and follow the prompts to generate all the block assets in the `blocks/` directory.\nBlock registration, script creation, etc will be scaffolded from the `bin/create-block/templates/block/` templates. Run `npm run build` to compile and build the custom block. Blocks are enqueued using the `load_scripts()` function in `src/assets.php`.\n\n### Updating WP Dependencies\n\nUpdate the [WordPress dependency packages](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-scripts/#packages-update) used in the project to their latest version.\n\nTo update `@wordpress` dependencies to their latest version use the packages-update command:\n\n```sh\nnpx wp-scripts packages-update\n```\n\nThis script provides the following custom options:\n\n-   `--dist-tag` – allows specifying a custom dist-tag when updating npm packages. Defaults to `latest`. This is especially useful when using [`@wordpress/dependency-extraction-webpack-plugin`](https://www.npmjs.com/package/@wordpress/dependency-extraction-webpack-plugin). It lets installing the npm dependencies at versions used by the given WordPress major version for local testing, etc. Example:\n\n```sh\nnpx wp-scripts packages-update --dist-tag=wp-WPVERSION`\n```\n\nWhere `WPVERSION` is the version of WordPress you are targeting. The version\nmust include both the major and minor version (e.g., `6.1`). For example:\n\n```sh\nnpx wp-scripts packages-update --dist-tag=wp-6.1`\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Credits\n\nThis project is actively maintained by [Alley\nInteractive](https://github.com/alleyinteractive). Like what you see? [Come work\nwith us](https://alley.co/careers/).\n\n- [Alley Interactive](https://github.com/Alley Interactive)\n- [All Contributors](../../contributors)\n\n## License\n\nThe GNU General Public License (GPL) license. Please see [License File](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falleyinteractive%2Fwp-newsletter-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falleyinteractive%2Fwp-newsletter-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falleyinteractive%2Fwp-newsletter-builder/lists"}