Czy można pozwolić użytkownikowi wybrać motyw, który chciałby zainstalować na nowej stronie rejestracji witryny? A kiedy strona zostanie utworzona, oczywiście instaluje dowolny wybrany przez siebie motyw.
Znalazłem wp_get_themes . Czy w ten sposób zabrałbyś się do wypełniania menu rozwijanego wszystkimi dostępnymi motywami? W jaki sposób przekazujesz informacje o kompozycji do faktycznego procesu rejestracji, aby strona została utworzona z odpowiednim motywem?
Jeśli ktoś wie, jak to zrobić za pomocą formularzy grawitacyjnych, byłoby to również świetne.
Aktualizacja:
Oto, co mam do tej pory, nie bierze pod uwagę motywów potomnych, popracuję nad tym później
Ta funkcja wyświetli listę motywów z przyciskami opcji, przechowując wybrany motyw w $ _POST ['custom_theme']
/**
* Show list of themes at bottom of wp-signup.php (multisite)
*/
function 70169_add_signup_extra_fields() { ?>
Themes<br />
<?php
$themes = wp_get_themes();
foreach ( $themes as $theme ) {
$theme_name = $theme['Name'];
$theme_stylesheet = $theme->stylesheet;
?>
<label>
<input id="<?php echo $theme_stylesheet; ?>" type="radio" <?php if ( isset( $_POST['custom_theme'] ) ) checked( $_POST['custom_theme'], $theme_stylesheet ); ?> name="custom_theme" value="<?php echo $theme_stylesheet; ?>" ><?php echo $theme_name; ?>
</label>
<?php } ?>
<?php }
add_action( 'signup_extra_fields', '70169_add_signup_extra_fields' );
Pomyślałem, że dodam ukryte pole jako sposób na przekazanie wartości motywu podczas tworzenia witryny. Jest w tym jednak coś nie tak - na ostatnim etapie traci swoją wartość, nie wiem jeszcze, dlaczego.
/**
* Add a hidden field with the theme's value
*/
function 70169_theme_hidden_fields() { ?>
<?php
$theme = isset( $_POST['custom_theme'] ) ? $_POST['custom_theme'] : null;
?>
<input type="hidden" name="user_theme" value="<?php echo $theme; ?>" />
<?php }
add_action( 'signup_hidden_fields', '70169_theme_hidden_fields' );
I wreszcie funkcja przekazywania nazwy motywu do nowo utworzonej witryny. Działa to, jeśli zmienię kod na stałe, ale nie jestem jeszcze w stanie przekazać wartości parametru custom_theme. Witryna została utworzona dobrze, ale opcje szablonu i arkusza stylów są puste. Po prostu nie otrzymuje wartości, bez względu na to, czego spróbuję. Chyba muszę użyć $ _GET, aby uzyskać dostęp do ukrytego pola, które utworzyłem wcześniej. Znowu wszystko, co chcę w tym momencie zrobić, to przekazać tę samą nazwę motywu do szablonu i opcji arkusza stylów, wymyślę, jak je rozróżnić po uruchomieniu.
/**
* Create the new site with the theme name
*/
function 70169_wpmu_new_blog( $blog_id ) {
// need to get this working, use $_GET?
// $theme = ???
update_blog_option( $blog_id, 'template', $theme ); // $theme works if I hardcode it with a theme name
update_blog_option( $blog_id, 'stylesheet', $theme );
}
add_action( 'wpmu_new_blog', '70169_wpmu_new_blog' );
źródło
Odpowiedzi:
Aby zrobić, co chcesz, możesz dodać dowolne pola, a następnie przechowywać je w
user_meta
...(Można również przechowywać je w
$user_info
tablicy / obiekcie, ale nie jestem pewien, jaka byłaby korzyść ..)po tym wszystkim możesz pobrać user_theme w następujący sposób:
UWAGA: To zostało napisane w locie. Nie zostało to zweryfikowane na wielu blogach, ale na prostej instalacji wp, i chociaż nie powinno być dużej różnicy - wciąż nie jest to funkcja produkcyjna, tylko po to, aby wprowadzić właściwą ścieżkę. Potrzebne są warunki sanitarne i sprawdzanie zmiennych, kod czyszczenia i FORMALNY ZNAK, a także dodawanie pola również do innych ekranów powiązanych z użytkownikiem (tworzenie użytkownika, edycja użytkownika, edycja profilu itp.).
UWAGA II: pytałeś o formy grawitacyjne w twoim uodate - mają do tego dodatek
źródło
template
istylesheet
są przechowywane w tabeli opcji. Mówiąc to, twój kod był do tej pory ogromną pomocą, dzięki.Wiem, że to rodzaj oszustwa, ale używam tej wtyczki. Pozwala skopiować dowolną istniejącą witrynę sieciową, a następnie udostępnia ją jako szablon podczas rejestracji nowych użytkowników. Możesz utworzyć dowolną liczbę nowych szablonów blogów. Będą one zawierać całą zawartość, wtyczki, ustawienia itp. Itp., A użytkownicy mogą wybrać jedną podczas konfigurowania nowej witryny / konta :)
http://premium.wpmudev.org/project/new-blog-template/
źródło
Ten rodzaj odpowiedzi na twoje pytanie: umieściliśmy wtyczkę o nazwie „ Zmiana motywu ” na tej stronie: focusww.com i umieściłem pasek boczny, na którym możesz wybierać z listy motywów. Pozwala wybrać motywy, które mogą być używane, i czas, po upływie którego plik cookie wygasa, aby powrócić do domyślnego motywu.
źródło
Jeśli nadal jest to istotne, być może może to pomóc innym szukającym podobnych rozwiązań
Napisałem tutaj wpis na blogu ( http://artofcoding.in/select-theme-while-registering-wordpress-multisite-network/ ), gdy miałem podobne wymagania. Mam nadzieję, że to jest pomocne.
źródło