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 opslag fra denne blog

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  Title ,  Nø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 kontrolpanelet I sektionen 

Søgemaskineoptimering er en videnskab indenfor online markedsføring

Søgemaskineoptimering Søgemaskineoptimering er en moderne tidsalder internet markedsføring videnskab, historie succes for flere internetportaler for bred vifte af online-forretning. Men det egentlige spørgsmål: “Hvad er en endelig afgørelse marketing søgemaskineoptimering?” Det er et spørgsmål, der popper op i hovedet på hver eneste virksomhed ejer over hele kloden. Før søgemaskineoptimering marketing, vil jeg tage dig gennem forskellige former for markedsføring almindelig i markedet. Markedsføring Offline – Tag som et eksempel pizza levering butik, hvor hver én markedsføringstilladelse, der skal gøres offline, og i dette tilfælde vil de blive rettet aviser, billboards, på tværs af vejen, populære radio-og tv til at fremme deres nye pizza produkt. Marketing online og offline – Antag, at du er nødt til at rejse, websted og ønsker at bringe klienter. I dette tilfælde kan du vælge både online såvel som offline markedsføring kanal er nævnt i det foregående eksempel. Marketing  Nogle
Som en naturlig del er  søgemaskineoptimering  blevet en del af hverdagen for hjemmesideejere og det tager Dynamicweb naturligvis højde for. Når du for eksempel har lavet en side i Dynamicweb, kan du højre klikke og vælge ”Egenskaber”. Under Egenskaber kan du tilføje en titel. Denne titel skal indeholde de vigtigste nøgleord for siden, hvor det vigtigste står først. Ud over titel kan du også lave en beskrivelse. Denne beskrivelse bliver i fagsprog kaldet meta description. Teksten du skriver her, er det stykke tekst, der står under sidens titel, når du søger på Google. Det er vigtig at lave en god beskrivelse, der dels beskriver din side og dels indeholder de vigtigste nøgleord, så Google kan finde den. Det er også en god idé at snakker med firmaet, der lavede din DynamicWeb. De kan nemlig sørge for at dine sider, får en god url. Den skal nemlig helst hedde det samme som sidens navn. Har du billeder på din hjemmeside, skal du også helst tilføje tekster til billederne. Disse tek