Yeni blog kurulum formuna Özel Blog Seçenekleri nasıl eklenir?


17

Yeterince basit bir gereklilik gibi görünüyor, ama mücadele ediyorum:

  1. "Yeni Site Ekle" ye bir seçenek alanı eklemek istiyorum .
    Basit bir metin seçeneği iyi. Bunu nasıl yaparım?

  2. Site oluşturulduğunda bu özel blog seçeneğini kaydetmem gerekiyor.

    Ben $metasağlanan seçenekleri ile değişken geçer 'wpmu_new_blog' kanca kullanabilirsiniz biliyorum , ama ben başka bir DB sorgusu gerçekleştirmek zorunda değilsiniz, ya da daha kötüsü bu tek bir adımda bunu yapmak için bir yol olup olmadığını merak ediyorum , site oluşturma işleminin tamamını geçersiz kıl / değiştir?

Notlar:

MultiSite kurulumuyla WP 3.3.1 kullanıyorum. Belirtilen özel alan değeriyle eşleşen tüm Siteleri listeleyen bir eklenti yazıyorum (buna "tür" diyelim).

Ayrıca, deneyimli bir PHP geliştiricisiyim ama hala WordPress hack'inde nispeten yeniyim, bu yüzden lütfen çeşitli WP işlevlerinin ve kancalarının hepsine yakından aşina olmadığımı varsayalım.

Yanıtlar:


9

İki cevaba (*) katılarak, yeni bir siteyi (ön ve arka uç) kaydederken özel bir meta seçeneği eklemek ve değerini Siteler ekranındaki bir sütunda görüntülemek için bir eklenti yaptım.

Çok Siteli Kategoriler

resim açıklamasını buraya girin resim açıklamasını buraya girin ...

(*) kod referansları

1 - WordPress + Multisite: Ağ Yöneticisi'nde Yeni Site formu eklemek için özel blog seçenekleri nasıl eklenir? , yazan @dennisg

2 - Çok Site: Yeni blog kurulum formuna Özel Blog Seçenekleri nasıl eklenir? , yazan @tbuteler

add_action('wpmu_new_blog', 'add_new_blog_field');İki cevaplardan birleştirilmiştir.

Zaten benim çoklu sitemde ID sütun kodunu kullanıyordum ve eklentide Kategori sütununu da ekledim.

[Güncelleme]

Kategori sütununu sıralanabilir hale getirmeye çalıştı, ancak neredeyse çözülemez görünüyor ...

Bu soruya / yanıta bakın: Sites.php veya link-manager.php dosyalarına ateşlenmeyen 'istek' ve 'parse_query' filtreleri

[güncelleme 2]

Eklentiyi yeniden çalıştım ve şimdi kategoriler sıralanabilir. Eklentinin ilk sürümü şimdi bir Gist (başlangıçta güncellenen bağlantı) ve yeni sürüm GitHub'da kalıyor.


+1 Hey bu harika, brasofilo! Bunu denemek için sabırsızlanıyorum :)
Brian Lacy

8

Çoklu site kayıt işlemi ince ayar yapmak için kolay bir şey değildir. Diğer süreçlerin aksine oynamak için birçok kanca var, ancak ağır özelleştirme için çok iyi bir araya gelmiyorlar, bu yüzden hayal kırıklığınızı anlıyorum.

Doğru bir şekilde anlarsam, WordPress'in varsayılan davranışının çoğunu geçersiz kılmadan tek adımlık bir çözüm olamamasına rağmen, esas olarak kayıt (yani, kullanıcının özel bilgileri göndereceği zaman) ve aktivasyon ( (yeni blogun ne zaman oluşturulacağı) ayrı ayrı gerçekleşir.

İşte başlamanız gereken çok kaba bir kod. Umarım sizi doğru yöne yönlendirir:

// Add text field on blog signup form
add_action('signup_blogform', 'add_extra_field_on_blog_signup');
function add_extra_field_on_blog_signup() { ?>
    <label>An extra field</label>
    <input type="text" name="extra_field" value="" />
<?php
}

// Append the submitted value of our custom input into the meta array that is stored while the user doesn't activate
add_filter('add_signup_meta', 'append_extra_field_as_meta');
function append_extra_field_as_meta($meta) {
    if(isset($_REQUEST['extra_field'])) {
        $meta['extra_field'] = $_REQUEST['extra_field'];
    }
    return $meta;
}

// When the new site is finally created (user has followed the activation link provided via e-mail), add a row to the options table with the value he submitted during signup
add_action('wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6);
function process_extra_field_on_blog_signup($blog_id, $user_id, $domain, $path, $site_id, $meta) {
    update_blog_option($blog_id, 'extra_field', $meta['extra_field']);
}

Aklında tut:

  1. Girdiyi eklenti aracılığıyla filtrelemek istiyorsanız, sağlanan seçenekleri kilitlemek için bir seçme girdisi kullanmanızı şiddetle öneririm;
  2. Bazı alanlar zorunlu olduğundan ve kayıt sırasında doğrulamadan geçtiği için (minimum karakter, site adı için izin verilmeyen karakterler, kara listeye alınmış adlar vb.), İlkinde girişin değerini doldururken $ _REQUEST globalindeki ekstra alanınızı kontrol etmenizi öneririm işlevi, böylece kullanıcı WordPress'in varsayılan alanlarının değerini düzeltmek için geri gönderilmesi durumunda girişini kaybetmez;
  3. Son işlevin fikrini, eklentinize en uygun olanla değiştirebilirsiniz, ancak alanın değeri artık bu son işlevden kullanılabilir ve bu da size yardımcı olacaktır.

Son bir notta, daha sonra mevcut tüm bloglardan tüm 'extra_field' değerlerini işlemek istiyorsanız, bilgilerin tek bir tabloda depolanmasını şiddetle tavsiye ederim; belki bu son işlev update_site_optionyerine kullanmak update_blog_option, blog_id kaybetmek, bu durumda gerekli değildir.

Her neyse, nasıl gittiğini bize bildirin ve iyi şanslar!


Büyük yararlı cevap, burada iyi kullanmak için koyabileceğim birçok bilgi :) Sadece lütuf aldığınız için brasofilo'ya en iyi cevabı veriyorum ve her ikisi de harika cevaplar.
Brian Lacy

Burada harika bir cevap, teşekkür ederim. Update_blog_option () 'nın çalışmasına izin vermiyorsam ekstra alanımın site seçeneklerine neden eklendiği hakkında bir fikrin var mı? Process_extra_field_on_blog_signup () ve exit () içindeki değerleri yankıladım ve çalıştı, extra_filed seçeneklere eklendi. Ama sadece exit () olmadan geçmesine izin verdiğinizde extra_field wp_xx_options'a eklenmez.
thatryan

@thatryan, bu garip ... Ya bir şey değerleri veritabanından kaldırıyor (büyük olasılıkla değil) ya da hiç eklenmiyor. Biraz daha test yapmayı deneyin ve çözmede sorun yaşıyorsanız soru göndermekten çekinmeyin. Bu cevabın muhtemelen WordPress 3.5 veya önceki sürümler için olduğunu unutmayın, bu yüzden yeni sürümlerde bir şeyler değişmiş olabilirler ...
Tomas Buteler

-1

site-new.php koduna bakarsanız cevabınızı zaten almış olursunuz - bu hayır!

Forma herhangi bir şey eklenip eklenemeyeceğini kontrol eden herhangi bir koşul yoktur. Ancak, dosyayı inceledim ve bu giriş alanını site-new.php dosyasına manuel olarak eklemeniz ve dizideki meta olarak 77 satırının yakınında bir yerde bulacağınız wpmu_create_blog işlevine geçirmeniz gerektiğine inanıyorum. TEST EDİLMEDİ işlevin ne yaptığı konusunda aradığınız şey olabilir.

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.