Home
Softono
w

wordpress

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
9

Software by wordpress

WordPress
Open Source

WordPress

Plausible Analytics WordPress plugin

WordPress Themes & Plugins E-commerce Platforms Traditional CMS
70 Github Stars
create-block-theme
Open Source

create-block-theme

# Create Block Theme Welcome to Create Block Theme - a WordPress plugin to create block themes from within the Editor. It works alongside features that are already available in the Editor to enhance the workflow for creating block themes. After being tested in this plugin, some of the features included here may be moved into the Editor itself. > [!IMPORTANT] > *Disclaimer:* The Create Block Theme plugin offers critical developer-friendly features; you can think of it as a Development Mode for WordPress, and you should *keep in mind that changes made through this plugin could change your site and/or theme permanently*. > > (Make sure you know what you're doing before hitting that 'Save' button 😉) This plugin allows you to: - Export your existing theme with all customizations made in the Editor - Create a new theme, blank theme, child theme, or style variation from the Editor This plugin also makes several changes to the contents of an exported theme, including: - Adds all images used in templates to the theme's `assets` folder. - Ensures the block markup used in templates and patterns is export-ready. - Ensures most strings used in templates and patterns are translate-ready. Learn more about Create Block Theme: - [How to use the plugin](#how-to-use-the-plugin) - [How to contribute](#how-to-contribute) - [User FAQs](https://wordpress.org/plugins/create-block-theme/) ## User Support If you have run into an issue, you should check the [Support Forums](https://wordpress.org/support/plugin/create-block-theme/) first. The forums are a great place to get help. If you have a bug to report, please submit it to this repository as [an issue](https://github.com/WordPress/create-block-theme/issues). Please search prior to creating a new bug to confirm its not a duplicate. ## Plugin Features ### Theme Creation Options There are six options the plugin provides to create a new theme: #### 1. Export Export the activated theme including the user's changes. #### 2. Create a child theme Creates a new child theme with the currently active theme as a parent. #### 3. Clone the active theme Creates a new theme by cloning the activated theme. The resulting theme will have all of the assets of the activated theme combined with the user's changes. #### 4. Overwrite theme files Saves the user's changes to the theme files and deletes the user's changes from the site. #### 5. Generate blank theme Generate a boilerplate "empty" theme inside of the current site's themes directory. #### 6. Create a style variation Saves user's changes as a [style variation](https://developer.wordpress.org/themes/advanced-topics/theme-json/#global-styles-variations) of the currently active theme. ### Embed Fonts Save fonts in your theme that have been installed with the Font Library (found in WordPress 6.5+, [more information](https://wordpress.org/documentation/wordpress-version/version-6-5/#add-and-manage-fonts-across-your-site)). ## How to Use the Plugin ### Step 1: Setup To use the latest release of the Create Block Theme plugin on your WordPress site: install from the plugins page in wp-admin, or [download from the WordPress.org plugins repository](https://wordpress.org/plugins/create-block-theme). There will be a new panel accessible from the WordPress Editor, which you can open by clicking on a new icon to the right of the "Save" button, at the top of the Editor. In the WordPress Admin Dashboard, under Appearance there will also be a new page called "Create Block Theme". ### Step 2: Styles and templates customizations Make changes to your site styles, fonts and templates using the Editor. ### Step 3: Save Still in the WordPress Editor, navigate to the Create Block Theme menu at the top of the Editor. To save recent changes made in the Editor to the currently active theme or export the theme: - Select "Save Changes to Theme" and select any options to customize what is saved - Check "Save Fonts" to copy the assets for any fonts installed and activated through the Font Library to the active font - Check "Save Style Changes" to copy your style changes made to the theme.json file - Check "Save Template Changes" to copy template changes made in the Editor to your activated theme. - With "Save Template Changes you may also select the following: - Check "Localize Text" to copy content to patterns from templates so that they can be localized for internationalization. - Check "Localize Images" to copy any images referenced in templates to the theme asset folder and reference them from a pattern. - Check "Remove Navigation Refs" to remove any navigation ref IDs from templates. - Click "Save Changes" to save any recent changes to the currently active theme. To export your theme to a zip file ready to import into another system: - Select "Export Zip" To edit the theme metadata: - Select "Edit Theme Metadata" to edit the metadata for the theme. These details will be used in the style.css file. To create a new blank theme: - Select "Create Blank Theme" - Supply a name for the new theme (and optional additional Metadata) - Click "Create Blank Theme" The theme will be created and activated. To create a variation: - Select "Create Theme Variation" - Provide a name for the new Variation - Click "Create Theme Variation" A new variation will be created. To create a new Clone of the current theme or to create a Child of the current theme: - Click "Create Theme" - Click "Clone Theme" to create a new Theme based on the active theme with your changes - Click "Create Child Theme" to create a new Child Theme with the active theme as a parent with your changes To inspect the active theme's theme.json contents: - Select "Inspect Theme JSON" Many of these options are also available under the older, deprecated Create Block Theme page under Appearance > Create Block Theme. To install and uninstall fonts: - Install and activate a font from any source using the WordPress Font Library. - Select "Save Changes" to save all of the active fonts to the currently active theme. These fonts will then be activated in the theme and deactivated in the system (and may be safely deleted from the system). - Any fonts that are installed in the theme that have been deactivated with the WordPress Font Library will be removed from the theme. ## How to Contribute We welcome contributions in all forms, including code, design, documentation, and triage. Please see our [Contributing Guidelines](/CONTRIBUTING.md) for more information.

WordPress Themes & Plugins
405 Github Stars
developer-blog-content
Open Source

developer-blog-content

# Welcome to the GitHub space where WordPress teams coordinate content to be published on the [Developer Blog](https://developer.wordpress.org/news/). - [How to contribute](https://developer.wordpress.org/news/how-to-contribute/) - [Tips and guidelines for Writers](https://developer.wordpress.org/news/tips-and-guidelines-for-writers/) - [About Page](https://developer.wordpress.org/news/about/) - [The Project Board](https://github.com/orgs/WordPress/projects/44/). For discussion, questions and meetings, please join the WordPress [#core-dev-blog](https://wordpress.slack.com/archives/C03RL47B3S8) channel. Editorial Group meetings are held every first Thursday of the month. Meeting notes are published on the [Make Core Blog with the tag #core-dev-blog](https://make.wordpress.org/core/tag/core-dev-blog/) Any suggestions/issues for the Developer Blog (bugs, design enhancements...) can be reported in the form of an issue in https://github.com/WordPress/wporg-developer-blog/issues ## Background - The proposal to [create a Developer Blog](https://make.wordpress.org/core/2022/02/25/proposal-to-start-a-news-blog-on-developer-wordpress-org/) was published in February 2022 - In July 2022, the [proposal for the editorial processes](https://make.wordpress.org/core/2022/07/06/proposed-editorial-process-for-the-new-developer-blog/) was published. - [WordPress Developer Blog is in public beta](https://make.wordpress.org/core/2022/11/21/wordpress-developer-blog-is-in-public-beta/)

Documentation
45 Github Stars
gutenberg
Open Source

gutenberg

# Gutenberg [![End-to-End Tests](https://github.com/WordPress/gutenberg/workflows/End-to-End%20Tests/badge.svg)](https://github.com/WordPress/gutenberg/actions?query=workflow%3A%22End-to-End+Tests%22+branch%3Atrunk) [![Static Analysis (Linting, License, Type checks...)](<https://github.com/WordPress/gutenberg/workflows/Static%20Analysis%20(Linting,%20License,%20Type%20checks...)/badge.svg>)](https://github.com/WordPress/gutenberg/actions?query=workflow%3A%22Static+Analysis+%28Linting%2C+License%2C+Type+checks...%29%22+branch%3Atrunk) [![Unit Tests](https://github.com/WordPress/gutenberg/workflows/Unit%20Tests/badge.svg)](https://github.com/WordPress/gutenberg/actions?query=workflow%3A%22Unit+Tests%22+branch%3Atrunk) [![Create Block](https://github.com/WordPress/gutenberg/workflows/Create%20Block/badge.svg)](https://github.com/WordPress/gutenberg/actions?query=workflow%3A%22Create+Block%22+branch%3Atrunk) <a href="https://wordpress.github.io/gutenberg/" target="_blank"><img src="https://raw.githubusercontent.com/storybooks/brand/master/badge/badge-storybook.svg" alt="Storybook Badge" /></a> [![lerna](https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg)](https://lerna.js.org) ![Screenshot of the Gutenberg Editor, editing a post in WordPress](https://user-images.githubusercontent.com/1204802/100067796-fc3e8700-2e36-11eb-993b-6b80b4310b87.png) Welcome to the development hub for the WordPress Gutenberg project! "Gutenberg" is a codename for a whole new paradigm in WordPress site building and publishing that aims to revolutionize the entire publishing experience as much as Gutenberg did the printed word. Right now, the project is in the second phase of a four-phase process that will touch every piece of WordPress -- Editing, Customization, **Collaboration** (which includes [Real-time collaboration](https://make.wordpress.org/core/2023/07/03/real-time-collaboration/), [Asynchronous collaboration](https://make.wordpress.org/core/2023/07/04/workflows/), [Publishing flows](https://make.wordpress.org/core/2023/07/04/workflows/), [Post revisions interface](https://make.wordpress.org/core/2023/07/05/revisions/), [Admin design](https://make.wordpress.org/core/2023/07/12/admin-design/), [Library](https://make.wordpress.org/core/2023/07/10/block-library/)), and Multilingual -- and is focused on a new editing experience, the block editor. The block editor introduces a modular approach to pages and posts: each piece of content in the editor, from a paragraph to an image gallery to a headline, is its own block. And just like physical blocks, WordPress blocks can be added, arranged, and rearranged, allowing WordPress users to create media-rich pages in a visually intuitive way -- and without workarounds like shortcodes or custom HTML. The block editor first became available in December 2018, and we're still hard at work refining the experience, creating more and better blocks, and laying the groundwork for the next three phases of work. The Gutenberg plugin gives you the latest version of the block editor, so you can join us in testing bleeding-edge features, start playing with blocks, and maybe get inspired to build your own. Check out the [Keeping up with Gutenberg Index](https://make.wordpress.org/core/handbook/references/keeping-up-with-gutenberg-index/). ## Getting Started Get hands-on: check out the [block editor live demo](https://wordpress.org/gutenberg/) to play with a test instance of the editor. ### Using Gutenberg - **Download:** To use the latest release of the Gutenberg plugin on your WordPress site: install from the plugins page in wp-admin, or [download from the WordPress.org plugins repository](https://wordpress.org/plugins/gutenberg/). - **User Documentation:** See the [WordPress Editor documentation](https://wordpress.org/documentation/article/wordpress-block-editor/) for detailed docs on using the editor as an author creating posts and pages. - **User Support:** If you have run into an issue, you should check the [Support Forums first](https://wordpress.org/support/forums/). The forums are a great place to get help. If you have a bug to report, please [submit it to the Gutenberg repository](https://github.com/wordpress/gutenberg/issues). Please search prior to creating a new bug to confirm it's not a duplicate. ### Developing for Gutenberg Extending and customizing is at the heart of the WordPress platform, this is no different for the Gutenberg project. The editor and future products can be extended by third-party developers using plugins. Review the [Quick Start Guide](https://developer.wordpress.org/block-editor/getting-started/quick-start-guide/) for the fastest way to get started extending the block editor. See the [Block Editor Handbook](https://developer.wordpress.org/block-editor/) for extensive tutorials, documentation, and API references. Also, check the [WordPress Developer Blog](https://developer.wordpress.org/blog/) for great articles about block development, among other topics. ### Contribute to Gutenberg Gutenberg is an open-source project and welcomes all contributors from code to design, and from documentation to triage. The project is built by many contributors and volunteers, and we'd love your help building it. See the [Contributors Handbook](https://developer.wordpress.org/block-editor/contributors/) for all the details on how you can contribute. To get up and running quickly with **code contribution**, see [Getting Started With Code Contribution](/docs/contributors/code/getting-started-with-code-contribution.md). Also check out the other resources available on the [Code Contributions](/docs/contributors/code/README.md) page. In whichever way you wish to contribute, please be sure to read the [Contributing Guidelines](https://github.com/WordPress/gutenberg/blob/HEAD/CONTRIBUTING.md) first. As with all WordPress projects, we want to ensure a welcoming environment for everyone. With that in mind, all contributors are expected to follow our [Code of Conduct](https://make.wordpress.org/handbook/community-code-of-conduct/). ## Get Involved You can join us in the `#core-editor` channel in Slack, see the [WordPress Slack page](https://make.wordpress.org/chat/) for signup information; it is free to join. ## License WordPress is free software, and is released under the terms of the GNU General Public License version 2 or (at your option) any later version. See [LICENSE.md](LICENSE.md) for complete license. <br/><br/><p align="center"><img src="https://s.w.org/style/images/codeispoetry.png?1" alt="Code is Poetry." /></p>

WordPress Themes & Plugins CMS Plugins & Extensions
11.7K Github Stars
two-factor
Open Source

two-factor

# Two-Factor ![Two-Factor](https://github.com/WordPress/two-factor/blob/master/.wordpress-org/banner-1544x500.png) ![Required PHP Version](https://img.shields.io/wordpress/plugin/required-php/two-factor?label=Requires%20PHP) ![Required WordPress Version](https://img.shields.io/wordpress/plugin/wp-version/two-factor?label=Requires%20WordPress) ![WordPress Tested Up To](https://img.shields.io/wordpress/plugin/tested/two-factor?label=WordPress) [![GPL-2.0-or-later License](https://img.shields.io/github/license/WordPress/two-factor.svg)](https://github.com/WordPress/two-factor/blob/trunk/LICENSE.md?label=License) ![WordPress.org Rating](https://img.shields.io/wordpress/plugin/rating/two-factor?label=WP.org%20Rating) ![WordPress Plugin Downloads](https://img.shields.io/wordpress/plugin/dt/two-factor?label=WP.org%20Downloads) ![WordPress Plugin Active Installs](https://img.shields.io/wordpress/plugin/installs/two-factor?label=WP.org%20Active%20Installs) [![WordPress Playground Demo](https://img.shields.io/wordpress/plugin/v/two-factor?logo=wordpress&logoColor=FFFFFF&label=Live%20Demo&labelColor=3858E9&color=3858E9)](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/WordPress/two-factor/master/.wordpress-org/blueprints/blueprint.json) [![Test](https://github.com/WordPress/two-factor/actions/workflows/test.yml/badge.svg)](https://github.com/WordPress/two-factor/actions/workflows/test.yml) [![Deploy](https://github.com/WordPress/two-factor/actions/workflows/deploy.yml/badge.svg)](https://github.com/WordPress/two-factor/actions/workflows/deploy.yml) [![codecov](https://codecov.io/gh/WordPress/two-factor/graph/badge.svg)](https://codecov.io/gh/WordPress/two-factor) > Two-Factor plugin for WordPress. [View on WordPress.org →](https://wordpress.org/plugins/two-factor/) ## Description The Two-Factor plugin adds an extra layer of security to your WordPress login by requiring users to provide a second form of authentication in addition to their password. This helps protect against unauthorized access even if passwords are compromised. ## Usage See the [readme.txt](readme.txt) for installation and usage instructions. ## Contribute Please [report (non-security) issues](https://github.com/WordPress/two-factor/issues) and [open pull requests](https://github.com/WordPress/two-factor/pulls) on GitHub. See below for information on reporting potential security/privacy vulnerabilities. Join the `#core-passwords` channel [on WordPress Slack](http://wordpress.slack.com) ([sign up here](http://chat.wordpress.org)). To use the provided development environment, you'll first need to install and launch Docker. Once it's running, the next steps are: git clone https://github.com/wordpress/two-factor.git cd two-factor npm install npm run build npm run env start See `package.json` for other available scripts you might want to use during development, like linting and testing. When you're ready, open [a pull request](https://help.github.com/articles/creating-a-pull-request-from-a-fork/) with the suggested changes. ## Testing 1. Run `npm test` or `npm run test:watch`. To generate a code coverage report, be sure to start the testing environment with coverage support enabled: npm run env start -- --xdebug=coverage To view the code coverage report, you can open a web browser, go to `File > Open file...`, and then select `{path to two-factor}/tests/logs/html/index.html`. ## Deployments Deployments [to WP.org plugin repository](https://wordpress.org/plugins/two-factor/) are handled automatically by the GitHub action [.github/workflows/deploy.yml](.github/workflows/deploy.yml). Versioned releases are deployed from [Git tags](https://github.com/WordPress/two-factor/tags) [under the `tags` directory](https://plugins.trac.wordpress.org/browser/two-factor/tags). See the workflow for current branch/release conditions used for readme and asset updates. [View release documentation →](RELEASING.md) ## Known Issues - PHP codebase doesn't pass the WordPress coding standard checks, see [#437](https://github.com/WordPress/two-factor/issues/437). ## Changelog A complete listing of all notable changes are documented in [CHANGELOG.md](https://github.com/wordpress/two-factor/blob/master/CHANGELOG.md). ## Credits Created [by contributors](https://github.com/WordPress/two-factor/blob/master/CREDITS.md) and released under [GPLv2 or later](LICENSE.md). ## Security Please privately report any potential security issues to the [WordPress HackerOne](https://hackerone.com/wordpress) program.

WordPress Themes & Plugins
811 Github Stars
theme-check
Open Source

theme-check

# Theme Check The theme check plugin is an easy way to test your theme and make sure it's up to spec with the latest [theme review](https://make.wordpress.org/themes/handbook/review/) standards. With it, you can run all the same automated testing tools on your theme that WordPress.org uses for theme submissions. The tests are run through a simple admin menu and all results are displayed at once. This is very handy for theme developers, or anybody looking to make sure that their theme supports the latest WordPress theme standards and practices. ## Frequently Asked Questions ### Why does it flag something as bad? It's not flagging "bad" things, as such. The theme check is designed to be a non-perfect way to test for compliance with the [Theme Review](https://make.wordpress.org/themes/handbook/review/) guidelines. Not all themes must adhere to these guidelines. The purpose of the checking tool is to ensure that themes uploaded to the central [WordPress.org theme repository](http://wordpress.org/themes/) meet the latest standards of WordPress themes and will work on a wide variety of sites. Many sites use customized themes, and that's perfectly okay. But themes that are intended for use on many different kinds of sites by the public need to have a certain minimum level of capabilities, in order to ensure proper functioning in many different environments. The Theme Review guidelines are created with that goal in mind. This theme checker is not perfect, and never will be. It is only a tool to help theme authors, or anybody else who wants to make their theme more capable. All themes submitted to WordPress.org are hand-reviewed by a team of experts. The automated theme checker is meant to be a useful tool only, not an absolute system of measurement. This plugin does not decide the guidelines used. Any issues with particular theme review guidelines should be discussed on the [Make Themes site](https://make.wordpress.org/themes), or [https://github.com/WPTRT/Theme-Requirements](https://github.com/WPTRT/Theme-Requirements) ## Other Notes ### How to enable trac formatting The Theme Review team use this plugin while reviewing themes and copy/paste the output into trac tickets, the trac system has its own markup language. To enable trac formatting in Theme-Check you need to define a couple of variables in wp-config.php: *TC_PRE* and *TC_POST* are used as a ticket header and footer. Examples: ``` define( 'TC_PRE', 'Theme Review:[[br]] - Themes should be reviewed using "define(\'WP_DEBUG\', true);" in wp-config.php[[br]] - Themes should be reviewed using the test data from the Theme Checklists (TC) ----- ' ); ``` ``` define( 'TC_POST', 'Feel free to make use of the contact details below if you have any questions, comments, or feedback:[[br]] [[br]] * Leave a comment on this ticket[[br]] * Send an email to the Theme Review email list[[br]] * Use the #wordpress-themes IRC channel on Freenode.' ); ``` If **either** of these two vars are defined a new trac tickbox will appear next to the *Check it!* button. If you want to exclude checking other files in development directories return `true` for the filter `tc_skip_development_directories`. ``` add_filter( 'tc_skip_development_directories', '__return_true' ); ``` To add more directories to the paths where other files are excluded then add them to the array through the `tc_common_dev_directories` filter. ### Usage with wp-cli To use with [wp-cli](https://wp-cli.org/), ensure the theme check plugin is active and `wp-cli` is installed. The `theme-check` subcommand is added to `wp-cli` and can be used as follows: `wp theme-check run [<theme>] [--format=<format>]` On success, the command returns a formatted table of results from the theme check plugin. #### Options | Option | Accepts | Required | Default | -- | -- | -- | -- | | `theme` | The slug of the theme to check | No | Current theme slug | `format` | `table` or `json` | No | `table` #### Examples - `wp theme-check run` - `wp theme-check run twentytwentyfour` - `wp theme-check run --format=json` - `wp theme-check run twentytwentyfour --format=json` ## Contributors Otto42, pross, The theme review team

WordPress Themes & Plugins Testing & QA
367 Github Stars
plugin-check
Open Source

plugin-check

# Plugin Check Plugin Check is a WordPress.org tool which provides checks to help plugins meet the directory requirements and follow various best practices. ## Features ### For end users * Allows analyzing any installed plugin using either a WP Admin screen or a WP-CLI command. * Supports two kinds of checks: * Static checks, which analyze the code, either using PHPCodeSniffer sniffs or custom logic e.g. using regular expressions. * Runtime checks, which actually execute certain parts of the code, such as running specific WordPress hooks with the plugin active. * Allows customizing which checks are run, either via a list of individual check identifiers, or specific check categories. * Comes with an ever-growing list of checks for various plugin development requirements and best practices. Please see the [`Default_Check_Repository::register_default_checks()` method](/includes/Checker/Default_Check_Repository.php#L31) for a quick overview of currently available checks. ### For developers * Facilitates efficient yet flexible authoring of new checks, either using a base class for common check patterns, or implementing an interface for more specific checks. * Every check has to implement either the [`Static_Check`](/includes/Checker/Static_Check.php) or the [`Runtime_Check`](/includes/Checker/Runtime_Check.php) interface. * Most checks will benefit from extending either the [`Abstract_File_Check`](/includes/Checker/Checks/Abstract_File_Check.php), the [`Abstract_PHPCodeSniffer_Check`](/includes/Checker/Checks/Abstract_PHP_CodeSniffer_Check.php), or the [`Abstract_Runtime_Check`](/includes/Checker/Checks/Abstract_Runtime_Check.php) class. * Comes with comprehensive unit test coverage. ## How to use The WordPress plugin checker is a WordPress plugin itself, which can be installed on any WordPress site. While it is implemented in a way that should avoid any disruptions on the site that it is being used on, it is still **advised not to use the plugin checker in a production environment**. There are a few ways to install the plugin checker: - Search for "Plugin Check (PCP)" on the page to install plugins (`/wp-admin/plugin-install.php`) on your WP site. - Download it from the WP.org plugins repository: https://wordpress.org/plugins/plugin-check/ - Clone this repository. See the [contributing section below](#contributing) for further instructions. After having the plugin activated, you can analyze any other plugin installed on the same site, either using the WP Admin user interface or WP-CLI: * To check a plugin using WP Admin, please navigate to the _Tools > Plugin Check_ menu. You need to be able to manage plugins on your site in order to access that screen. * To check a plugin using WP-CLI, please use the `wp plugin check` command. For example, to check the "Hello Dolly" plugin: `wp plugin check hello.php` * Note that by default when using WP-CLI, only static checks can be executed. In order to also include runtime checks, a workaround is currently required: use the `--require` argument to manually load `cli.php` from the plugin checker directory before WordPress loads. For example: `wp plugin check hello.php --require=./wp-content/plugins/plugin-check/cli.php` * You can use an arbitrary path or URL to check a plugin. For example, to check a plugin from a URL: `wp plugin check https://example.com/plugin.zip` or to check a plugin from a path: `wp plugin check /path/to/plugin` <img alt="WordPress plugin checker UI in WP Admin" src="https://github.com/WordPress/plugin-check/assets/3531426/19d0c1ce-8c37-4efd-b8c6-d252e6ce29c9"> <em>Screenshot of the plugin checker's UI in WP Admin</em> ## Reviewing a pull request in WordPress Playground Every pull request opened against this repository gets an automatic **"Open in WordPress Playground"** button appended to its description, running this PR's build of Plugin Check in your browser — no local setup required. The preview boots a fresh WordPress, installs and activates the PR's build of Plugin Check, logs you in as `admin` / `password`, and lands on _Tools → Plugin Check_ so you can run a check straight away. This makes reviewing UI, admin behaviour, and check output dramatically faster, and lowers the bar for non-developer reviewers. The button is added by the official [`WordPress/action-wp-playground-pr-preview`](https://github.com/WordPress/action-wp-playground-pr-preview) action via `.github/workflows/pr-playground-preview.yml` and `.github/workflows/pr-playground-preview-publish.yml`. The first workflow builds a production zip of the plugin (Composer dependencies installed without `--dev`, dev files excluded via `.distignore`) with read-only permissions and uploads it as a GitHub Actions artifact. After that build succeeds, the publisher workflow exposes the artifact on a public download URL and appends the **"Open in WordPress Playground"** button to the PR description with a blueprint that installs and activates that exact build. ## Contributing To set up the repository locally, you will need to clone this GitHub repository (or a fork of it) and then install the relevant dependencies: ``` git clone https://github.com/WordPress/plugin-check.git wp-content/plugins/plugin-check cd wp-content/plugins/plugin-check composer install npm install ``` ### Built-in development environment (optional) With the above commands, you can use the plugin in any development environment as you like. The recommended way is to use the built-in development environment, which is based on the [`@wordpress/env` package](https://www.npmjs.com/package/@wordpress/env), as that will allow you to use the preconfigured commands to e.g. run unit tests, linting etc. You will need to have Docker installed to use this environment. Start the **development** site: ``` npm run wp-env start ``` Start the **tests** stack: ``` npm run wp-env:start:tests ``` Stop each stack when finished: ``` npm run wp-env stop npm run wp-env:stop:tests ``` For further information on contributing, please see the [contributing guide](/CONTRIBUTING.md). ### Technical documentation To learn more about the functionality and technical details of the WordPress plugin checker, please refer to the [technical documentation](./docs/README.md). ## License The WordPress plugin checker is free software, and is released under the terms of the GNU General Public License version 2 or (at your option) any later version. See [LICENSE](/LICENSE) for complete license.

WordPress Themes & Plugins Testing & QA
353 Github Stars
desktop-mode
Open Source

desktop-mode

# WP Desktop Mode A WordPress plugin that reimagines `/wp-admin` as a desktop operating system. Admin screens open as draggable, resizable, minimizable **windows** on a **desktop**, with a left-edge **dock** built from the admin menu. Purely opt-in per user — the classic admin stays untouched for everyone else, and deactivating the plugin restores vanilla Core exactly. Zero Core patches. Every feature is wired through public WordPress hooks. [![Active Installs](https://img.shields.io/wordpress/plugin/installs/desktop-mode?logo=wordpress&logoColor=%23fff&label=Active%20Installs&labelColor=%2323282D&color=%2323282D)](https://wordpress.org/plugins/desktop-mode/) [![Playground Demo Link](https://img.shields.io/wordpress/plugin/v/desktop-mode?logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQ2IDI2IDUxIDUyIiBmaWxsPSJ3aGl0ZSI%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01My43MTE3IDQ1LjQ4MzlDNTIuNjY1IDQ2LjkyNzcgNTIuMTEyNyA0OC43MDE3IDUyLjAyMzkgNTAuNjUxM0M1Mi4wMDk2IDUwLjk2NjcgNTIuMDA3MyA1MS4yODY2IDUyLjAxNzEgNTEuNjEwNUM1Mi4xNDk0IDU1Ljk5NjUgNTQuNDgxMyA2MS4xMDUxIDU4LjY4NzkgNjUuMzExOEM2NS4xMjU4IDcxLjc0OTYgNzMuNjc2MSA3My43OTY2IDc4LjUxNiA3MC4yODgxQzc2LjQ4MDIgNjkuODA4NCA3NC40MjA2IDY5LjA2MDcgNzIuMzkyNiA2OC4wNjMzQzcxLjg3MiA2OC4wNDA1IDcxLjMxMTkgNjcuOTcyNiA3MC43MTE2IDY3Ljg1MjZDNjkuNjg1MiA2Ny42NDczIDY4LjU5OTggNjcuMjk0OSA2Ny40OTQxIDY2Ljc5MzZDNjcuNDk0MSA2Ni43OTM1IDY3LjQ5NCA2Ni43OTMzIDY3LjQ5NCA2Ni43OTMxQzY1LjQ3MTkgNjUuODc2NSA2My4zODE4IDY0LjQ2MjIgNjEuNDU5NiA2Mi41NEM1OS41Mzc2IDYwLjYxOCA1OC4xMjM0IDU4LjUyODEgNTcuMjA2OCA1Ni41MDYzQzU3LjIwNjcgNTYuNTA2MiA1Ny4yMDY2IDU2LjUwNjIgNTcuMjA2NSA1Ni41MDYyQzU2LjcwNTMgNTUuNDAwNCA1Ni4zNTI4IDU0LjMxNSA1Ni4xNDc1IDUzLjI4ODRDNTYuMDI3NSA1Mi42ODgzIDU1Ljk1OTYgNTIuMTI4MyA1NS45MzY4IDUxLjYwNzhDNTQuOTM5MyA0OS41Nzk3IDU0LjE5MTQgNDcuNTE5OSA1My43MTE3IDQ1LjQ4MzlaTTQ5LjY3OTUgNTcuNjkwNkM0OS44MjYgNTcuNTQ0MSA0OS45Nzk3IDU3LjQwNzQgNTAuMTQwMSA1Ny4yODA1QzUwLjYxMTcgNTguNjU3IDUxLjIzNCA2MC4wMzAzIDUxLjk5NjggNjEuMzczNEM1MS44OTQyIDYxLjgyNiA1MS44NzI2IDYyLjQ0NiA1Mi4wMzg4IDYzLjI3NzFDNTIuMzY4NyA2NC45MjY5IDUzLjM5NzYgNjYuOTUyMiA1NS4yMjI5IDY4Ljc3NzVDNTcuMDQ4MiA3MC42MDI4IDU5LjA3MzUgNzEuNjMxNiA2MC43MjMyIDcxLjk2MTZDNjEuNTU0NiA3Mi4xMjc5IDYyLjE3NDcgNzIuMTA2MSA2Mi42MjczIDcyLjAwMzVDNjMuOTcwNCA3Mi43NjYyIDY1LjM0MzcgNzMuMzg4NCA2Ni43MjAxIDczLjg1OTlDNjYuNTkzMSA3NC4wMjA0IDY2LjQ1NjQgNzQuMTc0MyA2Ni4zMDk3IDc0LjMyMDlDNjMuMjQ4MiA3Ny4zODI1IDU3LjA0MzUgNzYuMTQxNSA1Mi40NTEyIDcxLjU0OTJDNDcuODU4OSA2Ni45NTY5IDQ2LjYxNzkgNjAuNzUyMiA0OS42Nzk1IDU3LjY5MDZaTTY0LjkyMzkgNTkuMDc1OEM3NC4xMDg2IDY4LjI2MDUgODYuNTE4IDcwLjc0MjQgOTIuNjQxMSA2NC42MTkzQzk0Ljg1NSA2Mi40MDUzIDk1Ljk0MzkgNTkuMzY5NiA5NS45OTc5IDU1Ljk2MTZDOTYuMDkzMSA0OS45NDQxIDkyLjk2MTMgNDIuNzY2MSA4Ny4wOTc2IDM2LjkwMjRDNzcuOTEzIDI3LjcxNzcgNjUuNTAzNiAyNS4yMzU5IDU5LjM4MDUgMzEuMzU5QzU3LjE2MzYgMzMuNTc1OCA1Ni4wNzQ3IDM2LjYxNjcgNTYuMDIzNSA0MC4wMzAzQzU1LjkzMzIgNDYuMDQ1IDU5LjA2NDcgNTMuMjE2NiA2NC45MjM5IDU5LjA3NThaTTc3Ljg1ODYgNjAuNzA1NkM3OC4wMjkyIDYxLjU1ODQgNzguMDk0NCA2Mi4zMzAxIDc4LjA3NDcgNjMuMDIyNEM3NC42MjU1IDYxLjgyMTggNzAuOTcwMiA1OS41Nzg5IDY3LjY5NTYgNTYuMzA0NEM2NC40MjExIDUzLjAyOTggNjIuMTc4MiA0OS4zNzQ1IDYwLjk3NzYgNDUuOTI1NEM2MS42NyA0NS45MDU2IDYyLjQ0MTcgNDUuOTcwOSA2My4yOTQ1IDQ2LjE0MTVDNjYuMTk4MSA0Ni43MjIyIDY5LjU3MzEgNDguNDgwMiA3Mi41NDY1IDUxLjQ1MzZDNzUuNTE5OCA1NC40MjcgNzcuMjc3OSA1Ny44MDE5IDc3Ljg1ODYgNjAuNzA1NlpNNjIuMTUyMiAzNC4xMzA3QzYwLjQ5MjcgMzUuNzkwMiA1OS42MDcyIDM4LjQ4OTUgNjAuMDUzMyA0Mi4wNjA4QzY0Ljc0ODMgNDEuNjA0NCA3MC42MDA1IDQzLjk2NDIgNzUuMzE4MiA0OC42ODE5QzgwLjAzNTkgNTMuMzk5NiA4Mi4zOTU3IDU5LjI1MTcgODEuOTM5MiA2My45NDY4Qzg1LjUxMDYgNjQuMzkyOCA4OC4yMDk4IDYzLjUwNzMgODkuODY5MyA2MS44NDc4QzkxLjcxNTggNjAuMDAxMyA5Mi42MDQgNTYuODY3NyA5MS43NjYxIDUyLjY3NzdDOTAuOTM0NSA0OC41MjAxIDg4LjQ0NzQgNDMuNzk1NSA4NC4zMjU5IDM5LjY3NDFDODAuMjA0NSAzNS41NTI2IDc1LjQ3OTkgMzMuMDY1NSA3MS4zMjIzIDMyLjIzMzlDNjcuMTMyMyAzMS4zOTU5IDYzLjk5ODcgMzIuMjg0MiA2Mi4xNTIyIDM0LjEzMDdaIi8%2BPC9zdmc%2B&logoColor=%23fff&label=Playground%20Demo&labelColor=%233858e9&color=%233858e9)](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/WordPress/desktop-mode/refs/heads/trunk/.wordpress-org/blueprints/blueprint.json) [![Studio Demo Link](https://img.shields.io/wordpress/plugin/v/desktop-mode?logo=wordpress&logoColor=%23fff&label=Open%20in%20WordPress%20Studio&labelColor=%2323282D&color=%2323282D)](https://wp.com/open?deep_link=add-site%3Fblueprint_url%3Dhttps%253A%252F%252Fraw.githubusercontent.com%252FWordPress%252Fdesktop-mode%252Frefs%252Fheads%252Ftrunk%252F.wordpress-org%252Fblueprints%252Fblueprint.json) ## Demo <video src="https://github.com/user-attachments/assets/590aacc2-e9d7-4213-889e-b91e060e1bd8" controls width="720"></video> --- ## Contents - [Demo](#demo) - [Current State](#current-state) - [Still ahead](#still-ahead) - [Repository layout](#repository-layout) - [How to run it](#how-to-run-it) - [Quick install](#quick-install) - [Development setup](#development-setup) - [Requirements](#requirements) - [For plugin authors](#for-plugin-authors) - [License](#license) --- ## Current State - **Per-user opt-in** Admin-bar toggle sets the `desktop_mode_mode` user meta. A dedicated `/desktop-mode/` portal URL auto-enables desktop mode for first-time visitors (gated by `desktop_mode_portal_auto_enable`) and the `admin_init` redirect sends opted-in users from `/wp-admin/` to the portal (`desktop_mode_admin_redirect_to_portal`). - **Desktop shell** Fixed-viewport desktop that overlays `/wp-admin`: wallpaper area, unified dock (placement picked in OS Settings — left / right / bottom, default bottom), right-column widget layer, and full windowing system. `desktop_mode_mode_init`, `desktop_mode_shell_before` / `_after`, and the `desktop_mode_shell_config` filter are the main extension points. - **Window system — iframe + native** Iframe windows load admin pages with `?wp_desktop=1` (chromeless mode). Native windows render directly in the parent DOM via `desktop_mode_register_window()` / `wp.desktop.registerWindow()` — multi-tab native windows are supported through `desktop_mode_register_window_tab()`. Both types share drag, resize, minimize, maximize, close, fullscreen, and detach-to-new-tab. - **Dock** One unified rail hosting every admin menu — core and plugin alike — plus shell-level system tiles. Placement (left / right / bottom) is the user's OS Settings preference. Core menus are ordered before plugin menus; per-item hiding via `desktop_mode_dock_placement` (`'hidden'`). Per-item multi-window support via `desktop_mode_dock_item_multi`. Letter-badge icon fallback for plugins without icon art. - **Virtual desktops (“Spaces”)** Multiple desktops per user, each with its own window set. Overview grid (zoom-out view) surfaces the Spaces switcher, thumbnails, and create/close controls. - **Arrange & snap** Admin-bar Arrange menu: Cascade, Tile, Overview, Snap to grid. Plugins contribute custom entries via `desktop_mode_arrange_menu_items` and react to clicks via `desktop-mode.arrange.custom-action`. Tile grid dimensions and snap cell size are both filterable. - **Wallpaper registry** Server- and client-side registration (`desktop_mode_register_wallpaper()` / `wp.desktop.registerWallpaper()`). CSS presets + canvas (WebGL/2D) wallpapers with collision-aware surface data (`wp.desktop.getWallpaperSurfaces()`) for snow/rain/physics effects. In-panel `renderEditor` callback for custom controls, shared vendor-module loader (`pixijs` pre-registered). - **Widgets** Right-column floating cards, optionally draggable / resizable outside the column. `desktop_mode_register_widget()` / `wp.desktop.registerWidget()`. Built-in clock. User placement persists per-user in `localStorage`. - **Desktop icons** Wallpaper-layer shortcuts via `desktop_mode_register_icon()` — targets a registered native window or an admin URL. - **AI Assistant + slash commands** Cmd+K palette backed by an OpenAI agentic loop whose `search_posts` / `search_pages` / `search_comments` tools run WordPress's native keyword search. Admin-configured API key + model picker. The only automatic AI analysis is comment spam scoring (on comment save), which feeds the comments-window spam score; posts, pages, and terms are not analyzed. `wp.desktop.registerCommand()` adds slash commands with autocomplete (`suggest()`), confirm dialogs (`ctx.confirm()`), and full lifecycle hooks (`before-run` / `after-run` / `error`). Built-in `/open [window]` is extensible via `desktop-mode.open-command.items`. - **Palette registry** Cmd+K cycles through all registered palettes (`wp.desktop.registerPalette()`) — the AI assistant is palette 0 by default; additional plugin overlays share the shortcut. - **Cross-frame drag bridge** Media-library attachments drag across iframe boundaries via coordinated postMessage. Site-wide toggle through the Extended Options REST endpoint. - **Toast notifications** Shell-level toasts rendered via the `<wpd-toast>` component. Plugins register their own tone/icon via the `desktop_mode_toast_types` filter. Iframe pages raise a toast through the `desktop-mode-notification` bridge message — it survives the iframe's own lifecycle. - **OS Settings** Native-window settings panel: wallpaper picker (with HD-only media filter), accent color swatches + custom gradient editor, dock size slider, AI platform config, and per-user default-on-startup window. Persisted via `/desktop-mode/v1/os-settings`. - **Session persistence** Full window stack (including desktops, focus, state) is debounce-saved to `/desktop-mode/v1/session` and restored without layout flicker. Viewport-shrink clamping keeps off-screen windows reachable. - **postMessage bridge** Typed messages for title changes, navigation (same-origin validated), focus, color-scheme sync, screen-meta panels (Screen Options / Help), external-link capture, iframe-ready handshake, and observability (`iframe-error`, `iframe-network`). - **UI component library** ~25 `<wpd-*>` web components (`wpd-button`, `wpd-menu`, `wpd-panel`, `wpd-range-field`, `wpd-swatch`, `wpd-toast`, `wpd-tabs`, …) available to plugin authors — rendered server-side via `desktop_mode_component()` or imported in TS. - **i18n** Full gettext coverage across PHP and TypeScript; Spanish translation shipped. Strings go through `wp.i18n` (`__`, `_x`, `_n`, `sprintf`) directly — no shell-specific re-export. - **Component registration API** Stable `desktop_mode_register_*` functions for windows, widgets, wallpapers, icons, and window tabs. All return `true` / `WP_Error` with documented error codes. - **Public hook API** Comprehensive PHP and JS hook surface — dock items, placement, multi-window, native-window lifecycle, widget lifecycle, wallpaper lifecycle + surfaces, window lifecycle, iframe observability, arrange actions, virtual-desktop transitions, palette registration, command lifecycle, batch close, AI prompt + model + post-type filters, accents, toast types, default wallpaper. See [`docs/hooks-reference.md`](./docs/hooks-reference.md) and [`docs/javascript-reference.md`](./docs/javascript-reference.md). --- ## Still ahead - **Mobile (phone OS)** — purpose-built home-screen grid, full-screen apps, app switcher, gesture nav, bottom tab bar. - **Tablet hybrid** — split view, slide-over, horizontal dock. `wp.desktop.mode = 'desktop' | 'tablet' | 'mobile'` surface. - **Cross-window drag & drop (the North Star)** — extend the current drag bridge to Media → Gutenberg block insertion, with pluggable mime-type negotiation. - **Polish** — color-scheme-aware variables across all shell surfaces, View Transitions API animations, full a11y audit (ARIA, focus traps, keyboard nav). - **…and a whole lot more hooks, filters, and actions** — every new surface lands with its own extension points, so this list keeps growing. See [`docs/architecture.md`](./docs/architecture.md) for how the pieces fit together and [`docs/hooks-reference.md`](./docs/hooks-reference.md) for the hook surface (current and planned). See [`docs/architecture.md`](./docs/architecture.md) for how the pieces fit together and [`docs/hooks-reference.md`](./docs/hooks-reference.md) for the hook surface (current and planned). --- ## Repository layout ``` . ├── desktop-mode.php # bootstrap: header, constants, require_once of includes/ ├── includes/ # PHP subsystems │ ├── helpers.php admin-bar.php ajax.php │ ├── assets.php render.php portal.php │ ├── session.php default-window.php components.php │ ├── os-settings.php extended-options.php │ ├── accents.php wallpapers.php toast-types.php │ ├── media-query.php │ └── ai-copilot/ # AI assistant (OpenAI client, analysis, search, jobs) ├── assets/ # compiled CSS + JS (Vite output; tracked in git) │ ├── css/ desktop.css, windows.css, dock.css, chromeless.css, variables.css │ └── js/ desktop.js, desktop.min.js, chromeless bridge, media-library enhancements ├── src/ # TypeScript source — compiled by Vite │ ├── desktop.ts / dock.ts / hooks.ts / commands.ts / palette-registry.ts │ ├── ai-assistant.ts / drag-bridge.ts / toast.ts / desktop-icons.ts │ ├── native-windows.ts / built-in-commands.ts / public-api.ts / types.ts │ ├── window/ # Window class — DOM, pointer, tabs, iframe bridge │ ├── window-manager/ # stack, desktops, arrange, snap, overview │ ├── wallpapers/ # registry, layer, surfaces, server sync, vendor loader │ ├── widgets/ # registry, layer, frame, picker, storage │ ├── settings/ # OS Settings panel sections │ ├── ui/ # <wpd-*> web components │ ├── modules/ # vendor-script lazy-loader │ └── plugins/ # built-in demos (animated-logo-wallpaper) ├── docs/ # developer-facing docs (source of truth for plugin authors) ├── tests/ # PHPUnit + Vitest ├── languages/ # .po / .mo (es shipped) ├── bin/ # package-zip helpers ├── package.json # devDeps (vite, typescript, vitest) ├── vite.config.js # Vite lib-mode: src/desktop.ts → assets/js/desktop[.min].js (IIFE) ├── vitest.config.ts └── tsconfig.json ``` --- ## How to run it ### Quick install Just want to try it? Grab the pre-built zip and upload it to any WordPress — [Studio by WordPress.com](https://developer.wordpress.com/studio/), [`wp-env`](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-env/), or a hosted site. No Node, no build step. 1. Download [`desktop-mode.zip`](https://github.com/WordPress/desktop-mode/releases/latest/download/desktop-mode.zip) from the latest release (or pick a specific version from the [releases page](https://github.com/WordPress/desktop-mode/releases)). 2. In WP Admin: **Plugins → Add New → Upload Plugin**, choose the zip, and activate. 3. Click the **desktop** icon in the admin bar's top-right corner. The admin reloads inside the desktop shell. Click the same icon again to return to classic admin. ### Development setup For hacking on the plugin: clone the repo, run the build in watch mode, and load it into a local WordPress via symlink so every save is one browser refresh away. #### 1. Install dependencies ```bash npm install ``` #### 2. Build the TypeScript bundle The plugin uses **[Vite](https://vitejs.dev/)** in library mode. esbuild handles transpile and minify, so builds finish in ~70 ms per bundle. **Full build** — produces every bundle (`npm run build:desktop`, `:iframe-bridge`, `:recycle-bin`, `:posts-window`): ```bash npm run build ``` Writes: - `assets/js/desktop.js` / `.min.js` — main shell bundle (loaded based on `SCRIPT_DEBUG`). - `assets/js/iframe-bridge.js` / `.min.js` — opt-in bridge that gives any same-origin iframe access to `wp.desktop.iframe.*`. - `assets/js/recycle-bin.js` / `.min.js` — Recycle Bin native window. - `assets/js/posts-window.js` / `.min.js` — Native Posts window (the `<wpd-table>` replacement for the `edit.php` iframe; opt-in per user via OS Settings → Features). **Development watch** — auto-recompiles the unminified bundle on save: ```bash npm run dev ``` Leave it running in a separate terminal; refresh the browser after each save. Set `define( 'SCRIPT_DEBUG', true )` in `wp-config.php` so WordPress picks up the unminified bundle during development. #### 3. Load into a local WordPress You need a running WordPress to load the plugin into. Pick whichever is easier. ##### Studio, wp-env, or a hosted WP Run `npm run package` to build a zip from `HEAD` (with correct 0644 / 0755 permissions), then follow the [Quick install](#quick-install) steps 2–3 to upload and activate it. Re-package and re-upload after each change. > If you changed source, run `npm run build` before `npm run package` — the Vite output is gitignored, and `bin/package.sh` splices the built files into the zip from your working tree. ##### Clone `wordpress-develop` and symlink Gives you the full dev loop: `npm run dev` rebuilds on save, a browser refresh picks it up. ```bash # clone Core's Docker-based dev host alongside this repo git clone https://github.com/WordPress/wordpress-develop.git cd wordpress-develop npm install # symlink this plugin into the WP plugins directory ln -s "$(pwd)/../alcazaba-plugin" src/wp-content/plugins/desktop-mode # boot + install WordPress npm run env:start # nginx + PHP + MySQL in Docker npm run env:install # installs WordPress ``` Site: **http://localhost:8889** Admin: **http://localhost:8889/wp-admin/** Credentials: `admin` / `password` Stop the environment with `npm run env:stop` (from the `wordpress-develop` directory). Activate the plugin per [Quick install](#quick-install) steps 2–3. --- ## Requirements - WordPress **6.0+** - PHP **7.4+** ## For plugin authors **This plugin is built to be extended.** Every significant behavior is hookable — drop an icon on the desktop, add a dock item, gate desktop mode by role, react to window events, or register a native window, all from your own plugin with zero patches here. **See [`docs/`](./docs/README.md) — the developer documentation index.** Quick links: - [Getting Started](./docs/getting-started.md) — the five-minute tour for plugin authors. - [Architecture](./docs/architecture.md) — how the pieces fit together. - [Hooks Reference](./docs/hooks-reference.md) — every action and filter we fire, with signatures and examples. - [JavaScript Reference](./docs/javascript-reference.md) — CustomEvents, `window.wp.desktop` API, and the iframe `postMessage` bridge. - [Examples](./docs/examples/) — copy-paste recipes. ## License GPLv2 or later. See [LICENSE](LICENSE).

WordPress Themes & Plugins
240 Github Stars
wp-feature-notifications
Open Source

wp-feature-notifications

# WordPress Feature Project - Notifications > A feature plugin for WordPress, which aims to create a new (better) way to manage and deliver notifications to the relevant audience. - Contributors: schlessera, psykro, raaaahman, danbilauca, Sephsekla, erikyo, JasonTheAdams, johnhooks - Tags: feature-notifications - Requires at least: 6.2 - Tested up to: 6.2 - Requires PHP: 7.4 - License: GPLv2 or later - License URI: https://www.gnu.org/licenses/gpl-2.0.html See also [Trac ticket #43484](https://core.trac.wordpress.org/ticket/43484). ## Contributing to the project Want to get involved? Join our weekly office hours every Wednesday at 15:00 UTC in the [#feature-notifications](https://wordpress.slack.com/messages/C2K1C71FE) channel of the [Make WordPress Slack](https://make.wordpress.org/chat/). Please be sure to read our [contribution guidelines](CONTRIBUTING.md) before getting started. ### Prerequisites - [NodeJS](https://nodejs.org/en/download/) - [Composer](https://getcomposer.org/download/) - [wp-env](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-env/) (optional) - [Docker](https://docs.docker.com/get-docker/) (optional) We recommend using [nvm](https://github.com/nvm-sh/nvm) to ensure a compatible node version. ### Installation ```bash $ git clone https://github.com/WordPress/wp-feature-notifications.git $ cd wp-feature-notifications $ nvm use && npm i && composer install $ wp-env start ``` We take advantage of [wp-scripts](https://developer.wordpress.org/block-editor/reference-guides/packages/packages-scripts/) to compile scripts and styles for this plugin. You will mainly need these two commands: `npm run build` - Transforms your code according to the configuration provided, so it’s ready for production and optimized for the best performance. `npm run start`- Transforms your code according to the configuration provided, so it’s ready for development. The script will automatically rebuild if you make changes to the code, and you will see the build errors in the console. ## Issue Workflow ### Creating an issue Have an improvement, suggestion or bug? The first step is to [open an issue](https://github.com/WordPress/wp-feature-notifications/issues). New ideas and new contributors are very welcome! Please be sure to fill out all available fields, and provide as much detail as possible. Once your issue has been opened, it will be triaged, labelled and moved to the relevant [project board](https://github.com/WordPress/wp-feature-notifications/projects?type=classic). > [!IMPORTANT] > If your issue is a security vulnerabilty, please practice responsible disclosure and submit this at https://github.com/WordPress/wp-feature-notifications/security/advisories/new. ###  Working on an issue Please ensure that nobody else is already working on an issue before starting work, in order to avoid duplication of effort. If in doubt, it's best to ask in the issue itself! When starting work, **you should assign the issue to yourself** to make this as clear as possible. If you are contributing code, be sure to follow our [Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/) for both JavaScript and PHP. You should create one pull request for each indvidual issue you are working on. Make sure to [link it to the issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) for easy tracking. Create a draft pull request as early as possible for visibility; your code doesn't have to be finished to create this! Once your work is complete, and all automated checks have passed, please mark your pull request as ready for review. Anyone is free to add a review, however before a pull request can be merged it will need approval from a project maintainer. Please tag at least one of [Sephsekla](https://github.com/Sephsekla), [erikyo](https://github.com/erikyo) or [johnhooks](https://github.com/johnhooks)to review. ### Merging a pull request Once your pull request is approved, it will be merged by a maintainer. Thank you for your contribution to the project! ## Releases New releases should only be created from the `Trunk` branch. This is handled by a GitHub action whenever a new tag is created on this branch. A new release should only be created by a project maintainer after discussion with the team. ## Meetings We hold weekly office hours at every Wednesday at 15:00 UTC in the [#feature-notifications](https://wordpress.slack.com/messages/C2K1C71FE) channel of the [Make WordPress Slack](https://make.wordpress.org/chat/). New contributors are always welcome! We also hold a monthly planning meeting via Google Meet. This is currently held on the last Tuesday of every month at 14:00 UTC.

WordPress Themes & Plugins Push Notifications
193 Github Stars