Was ist der Unterschied zwischen get_site_option und get_blog_option?

9

Ich versuche den Unterschied zwischen get_site_option () und get_blog_option () zu verstehen .

Sind Blog und Site zwei verschiedene Dinge? Entschuldigung, wenn diese Frage grundlegend erscheint, aber wenn ich mich auf eine WordPress-Website beziehe, habe ich beide Begriffe immer sehr locker verwendet (um dasselbe zu bedeuten). Ich frage mich jetzt, ob es einen Unterschied gibt?

Henrywright
quelle

Antworten:

15

get_option()Gibt eine Option für das aktuelle Blog zurück.

Bei der Installation einer einzelnen Site ist das aktuelle Blog das einzige Blog. Also gibt get get_option()die Option dafür zurück.


get_site_option()wird verwendet, um eine Option netzwerkweit abzurufen. Dies bedeutet, dass Sie von jedem Standort des Netzwerks aus dieselbe Option erhalten können.

Wenn diese Funktion in einer einzelnen Installation verwendet wird, gibt sie normalerweise dasselbe von zurück get_option(). Der Wert kann sich ändern, weil get_site_option()Filterfilter-Hooks ausgelöst werden, die nicht von ausgelöst werden get_option().

Beachten Sie, dass, sobald die $wpdb->optionsTabelle blogspezifisch ist, netzwerkweite Optionen in der $wpdb->sitemetaTabelle gespeichert werden, die für Installationen mit mehreren Standorten spezifisch sind.


get_blog_option()ist die einzige der drei Funktionen, die den Optionsnamen nicht als 1. Argument erhält, sondern als 1. Argument $blog_id.

Tatsächlich wird es in Installationen mit mehreren Standorten verwendet, um eine Option aus einem bestimmten Blog abzurufen, dessen ID bekannt ist.

Diese Funktion bewirkt Folgendes:

switch_to_blog( $blog_id );
$value = get_option( $option, $default );
restore_current_blog();

return $value;

Wenn $blog_iddie aktuelle Blog-ID identisch ist, überspringt WordPress nur den switch_to_blogTeil und ruft nur auf get_option().

Diese Funktion ist in der Datei definiert wp-includes/ms-blogs.php, die nur für die Installation an mehreren get_blog_option()Standorten geladen wird. Sie ist also nicht in Installationen an einem Standort definiert.

gmazzap
quelle
6

get_site_option()- Ruft eine netzwerkweite Option ab. Diese Option wird normalerweise im Abschnitt "Netzwerkadministratoreinstellungen" eines Multisite-Setups hinzugefügt. Wenn ich 50 Sites hätte, wäre es mühsam, zu 50 verschiedenen Sites zu gehen und den gleichen Optionswert festzulegen. Stattdessen könnte ich den Optionswert einmal festlegen und ihn für alle Sites im gesamten Netzwerk anwenden lassen. Siehe http://codex.wordpress.org/Function_Reference/get_site_option

get_blog_option()- Hiermit können Sie den Wert einer Option für eine bestimmte Site abrufen. Ein Beispiel könnte darin bestehen, den Wert einer benutzerspezifischen Option für jede Site abzurufen. So konnte ich alle Sites abrufen, zu denen auch der Benutzer gehört, die Liste der Site-IDs get_blog_option()durchlaufen blog_idund den Namen und die Option übergeben und das Ergebnis zurückerhalten. Es ist eine Komfortfunktion, die so ziemlich Folgendes bewirkt:

switch_to_blog( $id ); $value = get_option( $option_name ); restore_current_blog();

Siehe http://codex.wordpress.org/Function_Reference/get_blog_option

tl; dr: get_site_option() erhält einen netzwerkweiten Wert, get_blog_option()erhält einen bestimmten Wert für eine bestimmte Site, ohne dass Sie zuerst selbst zu dieser Site wechseln müssen.

kingkool68
quelle