Gå videre til hovedindholdet

Creating your own WordPress plugin database migration framework

How to create a database migration framework for WordPress that automatically migrates changes to your plugin database structure.
So, how do you migrate changes to your database structure from one version to another (like you may know it from Ruby on Rails) when you are writing a WordPress plugin? Here’s one way to do it.
Let’s assume that the database migration should take place when the plugin is activated. Assuming your plugin is named myplugin, put this code in the myplugin.php file:
register_activation_hook(__FILE__'myplugin_install');
This makes WordPress execute the myplugin_install() method when the user activates your plugin.
Next, add this method:
function myplugin_install() {
  myplugin_migrate();
}
And our migration method:
function myplugin_migrate() {
  global $wpdb;
  $migs = myplugin_migrations();
  $current_migration = get_option('myplugin_current_migration', 0);
  $needed_migration count($migs);
  for ($i $current_migration$i $needed_migration$i++) {
    $mig $migs[$i];
    $wpdb->query($mig);
  }
  if ($current_migration == 0) {
    add_option('myplugin_current_migration'$needed_migration);
  else {
    update_option('myplugin_current_migration'$needed_migration);
  }
}
What this does is that it runs through database statements (queries) returned from the myplugin_migrations() method. Let’s implement the actual migrations – add this method:
function myplugin_migrations() {
  global $wpdb;
  $migs array();
  // Create example table
  $migs[] = '
  CREATE TABLE '.$wpdb->prefix.'myplugin_examples (
    id int(11) NOT NULL AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    PRIMARY KEY (id)
  )';
  // Add examples
  $migs[] = "INSERT INTO ".$wpdb->prefix."myplugin_examples SET name='First example'";
  $migs[] = "INSERT INTO ".$wpdb->prefix."myplugin_examples SET name='Second example'";
  // Return the migrations
  return $migs;
}
That would create an example table and insert some values.
Now imagine that two months later you need a description field in your examples table. What do you do? It’s as easy as adding one line of code to the migrations:
// Add description field to examples
$migs[] = "ALTER TABLE ".$wpdb->prefix."myplugin_examples ADD description VARCHAR( 255 ) NOT NULL";
Deactivate and activate the plugin, and you table now has an extra field. Easy as cake! :)
Share your thoughts, opinions, and suggestions below.

Kommentarer

Populære indlæg fra denne blog

Seo produkter

BASIC PAKKEBasic-pakken er til dig, der har en nyopstartet hjemmeside og ønsker at blive set på Google. SEO optimerer din hjemmeside, således Google nemt kan finde den samt give dig en høj rangering ved én enkelt søgning. Basic-pakken er god til dig, der har en ny eller lille hjemmeside samt en smule forståelse for tekstforfatning.
PLUS PAKKE Plus-pakken er vores mest købte pakke - den dækker nemlig de fleste ønsker! I pakken får du 1.000 ords SEO-optimeret tekstforfatning, som skal hjælpe dig med at skabe gode resultater på Google og give dig endnu større succes. Plus-pakken er god til dig, der har en forholdsvis lille hjemmeside eller webshop, dog dækker den også de større hjemmesider.
PREMIUM PAKKE Premium-pakken er til dig, som ønsker en god markedsføring på Google. Du får dobbelt op på on-page optimering, linkbuilding samt tekstforfatning i forhold til Plus-pakken. Denne pakke er til dig med en stor hjemmeside/webshop, men også til dig, der har en webshop med stort potentiale fo…

Formålet med SEO

SEO (SØGEMASKINEOPTIMERING) SEO, Search Engine Optimization eller på godt gammeldags dansk, søgemaskineoptimering er et område som henover de sidste 10 år er blevet et krav som man som virksomhed ikke kan ignorere. Formålet med SEO, er at dine kunder, som minimum, kan finde din hjemmeside når de søger efter den. Der ville ikke være meget ide i at have en flot og funktionel hjemmeside hvis ikke der er nogen der besøger den. Det ville svare til at have sin butik placeret i et kælderlokale, med gardinerne trukket for og ingen skilte udenfor. Så er man i hvert fald sikker på at de eneste kunder man ville få, er dem der vidste på forhånd hvor de skulle gå hen.


Hos Hcs Briller har vi SEO som en absolut spidskompetence. Vi har hjulpet flere end 50 virksomheder med at fremme deres placeringer og almen tilstedeværelse på nettet, herunder via Google søgninger, sociale medier som Facebook, Twitter og lignende, samt via generiske søgninger der anvender søgepartnere, brancheportaler mv. Baseret p…

Guide til søgemaskine-optimering i CMS

Din nye hjemmeside kan indstilles til at være mere brugervenlig over for søgemaskiner, således at indholdet lettere optages og indekseres korrekt. Det betyder at brugere, af eksempelvis Google, med større sandsynlighed får vist din side blandt søgeresultaterne.

Unikke titler og metadata Titler og metadata angives i Indholdssider i kontrolpanelet. Når en indholdsside oprettes eller redigeres, udfyldes felterne TitleNøgleord og Beskrivelse.
Title - Her angives en title (optimalt op til 67 tegn), som kort fortæller noget om indholdet på siden (fx Mine bedste mad-opskrifter med kylling)Nøgleord - her angives ord som beskriver indholdet, og som benyttes i indholdsteksten (fx mad, opskrifter, kylling)Beskrivelse - her angives en kort beskrivelse (fx Læs om lækre og sunde retter med kylling)
Brugervenlige URL'er Dette punkt kræver at webhotellet understøtter såkaldte .htaccess filer og URL Re-writing.
Gå til Indholdssider i kontrolpaneletI sektionen Indstillinger vælges Generer URL'er…