Update_user_meta ve update_user_option arasındaki fark


11

Herkes arasındaki fark nedir açıklayabilir update_user_metave update_user_optionhem kullanılabilir ve hangi senaryolarda?

Yanıtlar:


8

Layman açısından büyük bir fark yok! dahili olarak update_user_option()kullanır update_user_meta(). Tek fark, update_user_option()çoklu site içindeyseniz, veritabanı adı öneki + blog kimliğiyle seçenek adının ön ekidir ve tek bir site yüklemesinde iseniz, yalnızca tablo önekidir.

Koduna bir göz atın update_user_option()

/**
 * Update user option with global blog capability.
 *
 * User options are just like user metadata except that they have support for
 * global blog options. If the 'global' parameter is false, which it is by default
 * it will prepend the WordPress table prefix to the option name.
 *
 * Deletes the user option if $newvalue is empty.
 *
 * @since 2.0.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int    $user_id     User ID.
 * @param string $option_name User option name.
 * @param mixed  $newvalue    User option value.
 * @param bool   $global      Optional. Whether option name is global or blog specific.
 *                            Default false (blog specific).
 * @return int|bool User meta ID if the option didn't exist, true on successful update,
 *                  false on failure.
 */
function update_user_option( $user_id, $option_name, $newvalue, $global = false ) {
    global $wpdb;

    if ( !$global )
        $option_name = $wpdb->get_blog_prefix() . $option_name;

    return update_user_meta( $user_id, $option_name, $newvalue );
}

Seçenek adınızın önüne tablo ön eki + blog kimliği (Yalnızca kimlik 1 ve 0 dışındaysa) gelir.

Geçen parametreyi ayarlarsanız $globaliçin trueonunla hiçbir fark vardır update_user_meta().

update_user_option()Fonksiyonun amacı

Diğer tabloların aksine, WordPress her site için usermeta için ayrı tablo oluşturmaz. Tüm bloglar için (multisite) kullanıcı bilgilerini bir usermeta tablosuna kaydeder. Sadece her site için anahtar adı ön ekiyle blog prefixörneğin blog kimliği 4 wp_capabilitiesiçin depolanır wp_4_capabilities.

Böylece, hangi bilgileri kullanarak kaydederseniz edin update_user_option(), örneğin çoklu site veya tek site kurulumunda ana site key_name_abchaline gelir wp_key_name_abc. Gelecekte, tek sitenizi çoklu siteye dönüştürürseniz, bilgiler yalnızca ana sitede kullanılabilir.

Bazı bilgilerin site + kullanıcıya da bağlı olduğunu düşündüğünüzde bu işlevi kullanın. Bu bilgiler kullanıcı ve siteden bağımsız olduğu için ad, e-posta vb. Gibi değil.


7

Her ikisi de verilerini “usermeta” tablosuna yazar. Usermeta tablosunda saklanan kullanıcı seçenekleri, wp_ gibi wordpress tablosu önekini korurken, usermeta tablosunda saklanan kullanıcı metaları da içermez.

Kullanıcı seçenekleri blog'a özgü seçenekleri destekler, çoklu sitede faydalıdır. Kullanıcı meta, profil bilgileri gibi kullanıcı kimliğine özgü meta verilere dayanır.

Parametreler aslında oldukça farklı. Kullanıcı seçeneğinde $ user_id, $ option_name, $ newvalue, $ global ve user meta'da $ user_id, $ meta_key, $ meta_value, $ prev_value bulunur.

Hem seçenekler hem de kullanıcı usermeta için bazı değerler.

Seçenekler

  • wp_user_level
  • wp_user-settings
  • wp_capabilities
  • wp_user-settings zamanlı

kullanıcı

  • İsim
  • Soyadı
  • Takma ad
  • rich_editing
  • show_admin_bar_front
  • admin_color

https://codex.wordpress.org/Function_Reference/update_user_option#Parameters

https://codex.wordpress.org/Function_Reference/update_user_meta#Parameters

Kodeks sayfaları örnekleri gerçek dünya kullanımı sağlar.


1
Bunların nerede depolandığı konusunda daha net olabilir misiniz? İlk cümleniz aynı yerde saklandığını gösterir, ancak ikinci cümleniz onların ima etmediğini, belki de açık bir örnek daha iyi olacağını mı ima eder? Yanıtların kendi kendine yetmesi gerektiğini unutmayın, bu yüzden linkrot yerleştikten sonra hala mantıklıdırlar. Kodeks de kötü bir şekilde korunur ve yerini devhub
Tom J Nowell

@TomJNowell wp-include / user.php dosyasında bulunabilir - usermeta tablosunda hem meta hem de seçenekler için değerler bulacaksınız. Cevabımı düzenleyeceğim lol
Jarmerson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.