Thank you for your interest in contributing! This document provides guidelines for contributing to the project.
Be respectful, inclusive, and professional in all interactions.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- WordPress version, PHP version, and plugin version
- Browser and OS information (if frontend issue)
- Screenshots if applicable
- Check if the feature has already been suggested
- Create a new issue with:
- Clear title and description
- Use case and benefits
- Proposed implementation (optional)
-
Fork the repository and create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow WordPress coding standards
- Add comments for complex logic
- Keep functions focused and small
-
Test thoroughly
- Test with WordPress 5.0+
- Test with multiple themes
- Test in Chrome, Firefox, Safari
- Test on mobile devices
- Check for PHP warnings/errors
-
Commit your changes
git commit -m "Add feature: your feature description" -
Push to your fork
git push origin feature/your-feature-name
-
Open a Pull Request
- Provide clear description of changes
- Reference any related issues
- Include screenshots for UI changes
- Docker and Docker Compose
- Git
- Code editor (VS Code recommended)
# Clone your fork
git clone https://github.com/YOUR_USERNAME/wordpress-plugin.git
cd wordpress-plugin
# Start WordPress environment
docker-compose up -d
# Access WordPress at http://localhost:8888Follow WordPress PHP Coding Standards:
- Use tabs for indentation
- Use single quotes for strings (unless interpolating)
- Add spaces around operators
- Prefix function names with
ezcontactform_ - Use proper PHPDoc blocks
Good:
function ezcontactform_get_setting( $key ) {
$settings = get_option( 'ezcontactform_settings', array() );
return isset( $settings[ $key ] ) ? $settings[ $key ] : null;
}Bad:
function getSetting($key){
$settings=get_option("ezcontactform_settings",array());
return isset($settings[$key])?$settings[$key]:null;
}Before submitting a PR, ensure:
- No PHP warnings or errors
- No JavaScript console errors
- Code follows WordPress standards
- Tested on WordPress 5.0+
- Tested on PHP 7.4+
- Works with default WordPress themes
- Forms display correctly
- Forms submit successfully
- Settings save correctly
- No conflicts with common plugins
We welcome contributions in these areas:
- Fix reported issues
- Improve error handling
- Security improvements
- New display options
- Additional settings
- Integration with other plugins
- Translation support
- Improve README
- Add code examples
- Create video tutorials
- Update screenshots
- Add automated tests
- Test with different themes
- Cross-browser testing
- Accessibility testing
- Optimize script loading
- Reduce CSS size
- Improve caching
If you have questions about contributing, feel free to:
- Open a Discussion
- Email: support@ezcontactform.com
- Visit: www.ezcontactform.com/support
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing! 🎉