Contents
Introduction
Developing a WordPress plugin is a rewarding way to extend the functionality of your site or share solutions with the community. This guide walks you through every step—from setting up your environment to publishing your first plugin—providing best practices and references to official documentation.
1. Prerequisites
- Basic PHP Knowledge: Understand functions, arrays, classes, and object‐oriented programming.
- HTML/CSS/JavaScript: Familiarity with markup, styling, and DOM scripting.
- Local Development Environment:
- PHP (7.4 recommended)
- MySQL or MariaDB
- Web server (Apache, Nginx)
- WordPress installed locally
- Code Editor: VS Code, PhpStorm, Sublime Text, etc.
2. Setting Up Your Development Environment
A smooth workflow is critical. We recommend using a version control system like Git and debugging tools such as Xdebug.
- Install and configure your local server (e.g., MAMP, XAMPP, Local by Flywheel).
- Download and activate the latest WordPress from wordpress.org.
- Initialize a Git repository in
wp-content/plugins
and create a folder for your plugin, e.g.,my-first-plugin
.
3. Plugin File Structure Header
Every plugin begins with a single PHP file containing metadata. WordPress reads the header to recognize and list the plugin in the admin interface.
ltphp / Plugin Name: My First Plugin Plugin URI: https://example.com/my-first-plugin Description: A demonstration plugin to illustrate WordPress plugin development. Version: 1.0.0 Author: Your Name Author URI: https://example.com License: GPLv2 or later Text Domain: my-first-plugin / // Exit if accessed directly. defined(ABSPATH) exit
Key Points:
- Plugin Name: Displayed in the admin screen.
- Text Domain: Used for internationalization (i18n).
- Security: Always check
defined(ABSPATH)
to prevent direct access.
4. Core Concepts: Hooks, Actions Filters
WordPress provides a powerful hook system. Hooks enable you to “hook into” core processes without modifying core files.
Type | Purpose | Example |
---|---|---|
Action | Run custom code at specific points. | add_action(init,my_plugin_init) |
Filter | Modify data before output. | add_filter(the_content,my_content_filter) |
For a comprehensive list of hooks, visit the WordPress Hooks Reference.
5. Writing Your First Functionality
Let’s create a simple shortcode that outputs a greeting.
/ Register [greet] shortcode. / function mfp_greet_shortcode(atts) { atts = shortcode_atts(array( name =gt Visitor ), atts, greet) return ltdiv class=mfp-greetinggtHello, . esc_html(atts[name]) . !lt/divgt } add_shortcode(greet, mfp_greet_shortcode)
- Use
shortcode_atts
to handle attributes. - Sanitize output with
esc_html
. - Register with
add_shortcode
.
6. Enqueuing Scripts and Styles
Properly load assets using wp_enqueue_script
and wp_enqueue_style
to avoid conflicts.
function mfp_enqueue_assets() { wp_enqueue_style(mfp-styles, plugins_url(assets/css/style.css, __FILE__), array(), 1.0.0) wp_enqueue_script(mfp-scripts, plugins_url(assets/js/script.js, __FILE__), array(jquery), 1.0.0, true) } add_action(wp_enqueue_scripts, mfp_enqueue_assets)
- Use
plugins_url
orplugin_dir_url(__FILE__)
. - Specify dependencies and version numbers.
- Load scripts in footer by passing
true
as the last parameter.
7. Security Best Practices
- Sanitize Input:
sanitize_text_field
,absint
,wp_kses_post
. - Escape Output:
esc_html
,esc_url
,esc_attr
. - Nonces: Protect forms and URLs with
wp_nonce_field
andcheck_admin_referer
. - Capability Checks: Use
current_user_can
before performing privileged actions.
8. Internationalization (i18n)
To allow translations, wrap strings with __()
or _e()
and load text domain.
function mfp_load_textdomain() { load_plugin_textdomain(my-first-plugin, false, dirname(plugin_basename(__FILE__)) . /languages) } add_action(plugins_loaded, mfp_load_textdomain)
Place .po/.mo files in a languages
folder. Read more at Plugin Internationalization.
9. Testing Debugging
- Enable
WP_DEBUG
inwp-config.php
. - Write unit tests with WP PHPUnit.
- Use browser dev tools and logging (
error_log
,console.log
).
10. Packaging Publishing
- Ensure proper documentation: README.txt using WordPress.org readme standard.
- Compress plugin folder into a .zip file.
- Submit to the WordPress Plugin Directory or distribute privately.
Conclusion
Building your first WordPress plugin involves understanding the platform’s architecture, following best practices for security and performance, and leveraging the hook-based system. As you gain confidence, explore advanced topics like Gutenberg blocks, REST API integration, and custom database tables. For ongoing reference, bookmark the WordPress Plugin Developer Handbook—your definitive resource.
|
Acepto donaciones de BAT's mediante el navegador Brave 🙂 |