How to create, manage, use and destroy variables and constants in a WordPress plugin

Blog Tutorial

This tutorial shows how to create, use, manage and destroy variables and constants for a Wordpress plugin using PHP.

Today we will look at how to create, manage, use and destroy in a WordPress plugin as well as everything we need to manage a WordPress plugin.

This tutorial is not concerned with creating and managing a WordPress plugin, but to make the content of this article more understandable, and to make the following easier, we first need to define the structure and the base of a basic WordPress plugin. For example, if we take a generic WordPress plugin called wp-basic-plugin, this plugin must have its own folder called /wp-basic-plugin, which must have the same plugin name. Inside this folder there will be a mandatory file called wp-basic-plugin.php which defines the attributes and the nature of the plugin.

Define and manage constants in WordPress

In WordPress (and in any standard system or CMS) it is a good habit to define constants that will be used to access the folders, path and plugin name. This will avoid the use of a static path or static folder which will create bugs when the plugin is moved from site to site. WordPress provides a series of functions to do that. Please see below for these functions and the related description:

  • plugin_basename( string $file ) this function returns the plugin name, this can be used to make the code more standardised instead of using normal strings. In our example this function will return “wp-basic-plugin/wp-basic-plugin.php
  • plugin_dir_path( string $file ) this function returns the filesystem path of the variable $file, in our example (this actually depends on the server configuration) the function returns “/home/user/var/www/wordpress/wp-content/plugins/wp-basic-plugin“. This can be used to import JS files or CSS files etc.
  • plugin_dir_url ( string $file ) this function is similar to the previous one, but it returns the URL of the current plugin.

The following examples show how the previous functions can be used to generate constants:

define('PLUGIN_WPE_BASENAME', plugin_basename(__FILE__) );
// PLUGIN_WPE_BASENAME will be 'wp-basic-plugin/wp-basic-plugin.php'
define('PLUGIN_WPE_PATH', plugin_dir_path( __DIR__ ) );
// PLUGIN_WPE_PATH will be  /home/user/www/wp-content/wp-basic-plugin
define('PLUGIN_WPE_URL', plugin_dir_url( __DIR__ ) );
// PLUGIN_WPE_URL will be

Let’s see how to use the constants that we have just created above:

add_filter('plugin_action_links_' . PLUGIN_WPE_BASENAME, 'wp_basic_plugin_settings_link');
// this hook creates an action link with name plugin_action_links_wp_basic_plugin based on the function wp_basic_plugin_settings_link
include_once( PLUGIN_WPE_PATH . 'views/admin-form.php' );
// this function includes the file admin-form.php which is in the directory /wp-content/wp-basic-plugin/view/admin-form.php
wp_enqueue_script('wp-plugin-esempio-admin', PLUGIN_WPE_URL . 'js/admin.min.js' );
// this function includes the JS file called admin.min.js which is in the URL

Define, manage and destroy variables in a WordPress plugin

Now we will look at how to create variables in WordPress. In this case the operation is very simple, due to the flexibility of PHP, which doesn’t require any type declaration. The only necessary function to do is update_option( string $option, mixed $value, string|bool $autoload = null ). Please click this link to the WordPress documentation for more information. This function is used to create variables and to assign a value to variables inside a Wordress plugin. The variables will be saved in the database without using any query.

We need to keep in mind that any variables in any WordPress plugin must have a unique name in order to avoid the same variable being called accidentally by multiple plugins, so do not use easy names such as A, B, C or index or number1, number2, always use the plugin name as the beginning of the variable name. Here are few examples:

// copy the value of $phone in wp-basic-plugin-phone-number
update_option( 'wp-basic-plugin-phone-number', $phone );
// copy the value of $prefix in wp-basic-plugin-phone-prefix ecc...
update_option( 'wp-basic-plugin-phone-prefix', $prefix );
update_option( 'wp-basic-plugin-full-phone-number', $fullPhoneNumber );
update_option( 'wp-basic-plugin-title', $title );
update_option( 'wp-basic-plugin-text', 'text in here!!!' );
update_option( 'wp-basic-plugin-button', $button );

To use the variables created above and get the values, we need to use the function get_option( string $option, mixed $default = false ). Please have a look at this link to read more information on this function:

// display the value of wp-basic-plugin-phone-prefix inside input text
<input type="text" value="<?php echo get_option('wp-basic-plugin-phone-prefix'); ?>" class="regular-text" />
// display the value of wp-basic-plugin-form-message on screen
echo get_option('wp-basic-plugin-form-message');

It’s good practice for any developer to keep the memory of their plugin clean and tidy and to destroy the variables and constants when the plugin is not active or when the plugin has been deleted. To do that we just need to create a file called uninstall.php on the plugin folder /wp-basic-plugin. WordPress will run this file once the plugin is deleted. The file will then destroy the variables previously created using the WordPress function delete_option( string $option ). Here is how to use this function:

// check if this file is ran by WordPress
if (!defined('WP_UNINSTALL_PLUGIN')) {

// destroy the variables below
delete_option( 'wp-basic-plugin-phone-number' );
delete_option( 'wp-basic-plugin-phone-prefix' );
delete_option( 'wp-basic-plugin-full-phone-number' );
delete_option( 'wp-basic-plugin-title' );
delete_option( 'wp-basic-plugin-text' );
delete_option( 'wp-basic-plugin-button' );
delete_option( 'wp-basic-plugin-form-message' );

The part on the top of the code above “defined(‘WP_UNINSTALL_PLUGIN’)” will check if the file uninstall.php is ran by WordPress, to avoid this file being ran through the browser and accidentally destroying our plugin variables.

You May Like

I built a WordPress plugin that gives the possibility to make the background image clickable, I have worked on this plugin with the idea in mind that a plugin has to be the more possible standard in order to work with any existing WordPress theme, but I realized that making such plugin is virtually impossible as long as any […]

November 12, 2020

Siccome ho notato che c’e’ molta confusione sulla gestione e la creazione di Shortcode in Stackoverflow e in generale su internet ho deciso di fare questa guida per spiegare in modo semplice come creare e gestiore un Shortcode in Wordpree e a che cosa serve. Prima di tutto … Cos’e’ uno Shortcode in WordPress e a […]

October 10, 2020

Oggi vediamo di analizzare un errore che appare ultimamente spesso nell’ispector e che e’ molto difficile da individuare e risolvere. L’errore appare come “Failed to load resource: net::ERR_BLOCKED_BY_CLIENT” o anche come “Impossibile caricare la rete: net :: ERR_BLOCKED_BY_CLIENT” se il vostro browser e’ in italiano. Questo errore e’ sempre seguito da un url, l’url in […]

May 23, 2020

Click to Leave a Comment