ユーザーが新しいサイトのサインアップページからインストールするテーマを選択できるようにすることは可能ですか?サイトが作成されると、選択したテーマがインストールされます。
wp_get_themesが見つかりました。これは、ドロップダウンメニューに利用可能なすべてのテーマを事前に入力する方法ですか?テーマの情報を実際のサインアッププロセスにどのように渡して、サイトが正しいテーマで作成されるようにしますか?
誰かが重力フォームでこれを行う方法を知っているなら、それも素晴らしいでしょう。
更新:
ここに私がこれまで持ってきたものがあります、それは子のテーマを考慮に入れていません、後でそれに取り組みます
この関数は、ラジオボタン付きのテーマのリストを出力し、選択したテーマを$ _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' );
テーマの値をサイト作成に渡す方法として、隠しフィールドを追加すると思いました。しかし、これには何か問題があります-最後のステップで、それはその価値を失います、まだ理由はわかりません。
/**
* 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' );
そして最後に、新しく作成されたサイトにテーマ名を渡す関数です。これは変数をハードコーディングした場合に機能しますが、まだcustom_themeの値を渡すことができません。サイトは正常に作成されますが、テンプレートとスタイルシートのオプションは空白です。私が何を試しても価値はありません。以前に作成した非表示フィールドにアクセスするには、$ _ GETを使用する必要があると思います。繰り返しますが、この時点でやりたいのは、テンプレートとスタイルシートのオプションに同じテーマ名を渡すことだけです。動作させた後で、それらを区別する方法を理解します。
/**
* 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' );