Có thể cho phép người dùng chọn chủ đề họ muốn cài đặt từ trang đăng ký trang web mới không? Và một khi trang web được tạo, nó rõ ràng sẽ cài đặt bất kỳ chủ đề nào họ chọn.
Tôi tìm thấy wp_get_theme . Đây có phải là cách bạn sẽ thực hiện trước khi điền vào một menu thả xuống với tất cả các chủ đề có sẵn? Làm thế nào để bạn chuyển thông tin của chủ đề cho quá trình đăng ký thực tế để trang web được tạo với chủ đề chính xác?
Nếu ai đó biết cách làm điều này với Gravity Forms, điều đó cũng sẽ rất tuyệt.
Cập nhật:
Đây là những gì tôi có cho đến nay, nó không tính đến các chủ đề con, sẽ hoạt động trên đó sau
Hàm này sẽ xuất danh sách các chủ đề bằng các nút radio, lưu trữ chủ đề đã chọn trong $ _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' );
Tôi nghĩ rằng tôi đã thêm một trường ẩn như một cách để chuyển giá trị của chủ đề vào việc tạo trang web. Có điều gì đó không đúng với điều này mặc dù - ở bước cuối cùng, nó mất đi giá trị của nó, không biết tại sao.
/**
* 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' );
Và cuối cùng là một chức năng để chuyển tên chủ đề đến trang web mới được tạo. Điều này hoạt động nếu tôi mã hóa các biến, nhưng tôi chưa thể chuyển giá trị của custom_theme. Trang web được tạo tốt nhưng các tùy chọn mẫu và biểu định kiểu trống. Chỉ là tôi không nhận được giá trị cho dù tôi có cố gắng thế nào. Tôi đoán tôi phải sử dụng $ _GET để truy cập vào trường ẩn mà tôi đã tạo trước đó. Một lần nữa, tất cả những gì tôi muốn làm vào thời điểm này là chuyển cùng tên chủ đề cho các tùy chọn mẫu và biểu định kiểu, tôi sẽ tìm ra cách phân biệt chúng sau khi tôi làm cho nó hoạt động.
/**
* 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' );