Înțelegerea și lucrul cu datele din WordPress - Multisite

În părțile anterioare ale acestei serii, am lucrat prin diferitele tabele din baza de date WordPress și am examinat ce date stochează, modul în care interacționează între ele și ce funcții le utilizați pentru a interacționa cu ele.

În această ultimă parte, voi continua să mă uit la Multisite. Baza de date pentru o instalare WordPress Multisite va conține tabele suplimentare: un set de tabele pentru fiecare site care rulează în rețea și câteva tabele suplimentare pentru rețeaua în sine, precum și tabelele pentru site-ul central. 

Aceasta înseamnă că există trei elemente pentru înțelegerea modului în care baza de date funcționează în Multisite:

  • Tabele de baze de date pentru site-ul central
  • Tabele de bord pentru rețea
  • Tabele de baze de date pentru fiecare site suplimentar.

Voi începe să vă uitați la modul în care WordPress stochează datele pentru site-ul de bază.

Tabele de baze de date pentru site-ul principal în multisite

Pentru site-ul de bază într-o rețea, WordPress utilizează aceleași 11 tabele de baze de date ca într-o singură instalare a site-ului:

  • wp_posts
  • wp_postmeta
  • wp_comments
  • wp_commentmeta
  • wp_users
  • wp_usermeta
  • wp_links
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wp_options

Acestea vor conține date referitoare la site-ul principal. Două dintre acestea vor conține, de asemenea, date referitoare la restul rețelei. Acestea sunt:

  • wp_users
  • wp_usermeta

Celelalte nouă tabele funcționează în același mod ca și pentru un singur site - stochează date despre conținutul principal al site-ului. Cu toate acestea, ultimele două tabele vor stoca, de asemenea, date de utilizator relevante pentru întreaga rețea, precum și date de utilizator care sunt utilizate numai de site-ul central. Voi examina acest lucru într-un moment.

Tabele de baze de date pentru rețea

Pe lângă stocarea datelor de utilizator pentru întreaga rețea în două tabele de bază, WordPress creează, de asemenea, tabele suplimentare într-o instalare multisite care dețin date referitoare la rețea și site-urile sale. 

Acestea sunt:

  • wp_blogs
  • wp_blog_versions
  • wp_registration_log
  • wp_signups
  • wp_site
  • wp_sitemeta
  • wp_sitecategories (Opțional)

WordPress folosește aceste șapte (sau șase) tabele plus cele două tabele de utilizatori pentru a stoca toate datele despre rețeaua Multisite. Iată ce stochează fiecare dintre ele:

Masa Date notițe
wp_blogs Acest câmp stochează detaliile fiecărui site din rețea, deci are doar o singură înregistrare pentru fiecare site. Domeniile includ blog_id, domeniu, înregistrat (datele pe care a fost creat site - ul) și Ultima actualizare (din nou, o dată).
wp_blog_versions Versiunea curentă a bazei de date pentru fiecare site, actualizată atunci când actualizați rețeaua. Trei domenii: blog_id, db_version și Ultima actualizare
wp_registration_log Utilizatorul de admin creat atunci când fiecare site este înregistrat Pentru fiecare site (identificat prin blog_id), tabela stochează numele de utilizator pentru administrator, adresa de e-mail și data la care au fost înregistrați.
wp_signups Stochează date pe site-uri care au fost înregistrate, dar nu au fost activate Câmpurile includ un mod unic signup_id pentru fiecare înregistrare, domeniul înregistrat pentru, titlul, numele de utilizator și adresa de e-mail. Odată ce un site este activat, această înregistrare este ștearsă și este creată o înregistrare în wp_blogs.
wp_site Stochează adresa URL pentru site-ul principal Acest tabel are o singură înregistrare cu trei câmpuri: id al site-ului principal (care va fi 1), domeniul său și calea (în mod normal /)
wp_sitemeta Stochează metadatele pentru rețea Acest tabel este echivalent cu wp_options pentru întreaga rețea. Conține toate metadatele referitoare la setările de rețea, plus cantități mai mici de metadate pentru site-urile individuale. Are patru câmpuri: o unică meta_id, SITE_ID (la care se face legătura wp_blogs), meta_key și meta_value.
wp_sitecategories Tabela opțională a fost creată numai dacă sunt activate termeni globali pentru un site. Activarea termenilor globali vă permite să utilizați termeni pe mai multe site-uri din rețea. Tabelul (dacă este creat) va avea patru câmpuri: cat_ID, CAT_NAME, category_nicename și Ultima actualizare. Rețineți că aceste tabele stochează termeni, nu doar categorii, în ciuda numelor de câmpuri.
wp_users Datele despre toți utilizatorii sunt stocate aici mai degrabă decât pentru fiecare site, deoarece utilizatorii individuali pot avea acces la mai multe site-uri din rețea. Într - o instalare Multiste WordPress creează două câmpuri suplimentare în wp_users tabel: spam și șterse, ambele fiind valori booleene care nu corespund NU.
wp_usermeta wp_usermeta tabelele stochează toate metadatele pentru toți utilizatorii site-ului Tabelul este utilizat în același mod ca pentru o singură instalare a site-ului.

Relațiile dintre tabele

Cele mai multe dintre aceste tabele sunt legate de wp_blogs tabel prin blog_ID , deoarece toate datele necesare pentru site-urile din rețea vor trebui să fie legate de înregistrarea de bază a site-ului. Excepțiile sunt:

  • wp_sitecategories, care se leagă de postări și de alte tipuri de conținut
  • wp_signups, deoarece acestea nu sunt încă înregistrate
  • wp_usermeta, care are o legătură indirectă wp_blogs prin intermediul wp_users

Pentru mai multe detalii despre fiecare dintre aceste tabele și câmpurile acestora, consultați pagina Codex din baza de date.

Tabele de baze de date pentru site-uri dintr-o rețea

Modul în care WordPress stochează datele pentru fiecare dintre site-urile din rețea este destul de simplu: creează mai multe copii ale fiecărui tabel de baze de date, câte unul pentru fiecare site. Cu toate acestea, nu se creează copii suplimentare wp_users și wp_usermeta deoarece toate acestea sunt stocate în tabelul principal.

Pentru a face diferența între tabele pentru fiecare site, WordPress adaugă ID-ul site-ului la numele tabelului, de exemplu pentru site-ul 2, wp_posts devine wp_2_posts.

Fiecare site va avea următoarele tabele:

  • wp_xx_posts
  • wp_xx_postmeta
  • wp_xx_comments
  • wp_xx_commentmeta
  • wp_xx_links
  • wp_xx_term_relationships
  • wp_xx_term_taxonomy
  • wp_xx_terms
  • wp_xx_options

xx de mai sus vor fi înlocuite cu ID-ul site-ului numeric. Toate aceste tabele stochează datele în același mod pentru fiecare site ca și în cazul în care site-ul ar fi o singură instalare a site-ului.

rezumat

Dacă manipulați, preluați sau mutați date dintr-o instalare WordPress Multisite, este important să înțelegeți modul în care Multisite stochează date diferit de o instalare Multisite. 

După cum am arătat, există trei elemente principale: tabelele utilizate pentru site-ul de bază; tabele utilizate pentru stocarea bazei de date despre rețea în ansamblu; și tabele create pentru fiecare site nou. Structura acestora este similară cu o singură instalare a site-ului atâta timp cât vă amintiți că cele două tabele care stochează date despre utilizatori nu sunt duplicate pentru fiecare site.

Cod