web-dev-qa-db-ja.com

フロントエンドからテーマオプションを保存する(options.php)

フロントエンドからオプションを保存しようとしましたが、それを実行する方法がまだ見つかりません。
つまり、ブログの所有者にドロップダウンを使用してさまざまなstylesheet.cssを選択できる単純なフォームを提供するという考えです。私はwp-admin領域のためにそれを構築しました、そして、それはうまく働きます、しかし、私はフロントエンドで同じことをしたいです、

私はヘッダーにwp-admin/options.phpを含めようとしましたが、何も、ただのエラー、
フォームを "wp-admin/options.php"に投稿しましたが、wp-admin/optionsページにリダイレクトされます。

これがフロントエンドの形式です。

<form id="save-theme" name="save-theme" action="/wp-admin/options.php" method="post">
<select>
    <option>Select Theme</option>
    <option>Red</option>
    <option>Dark</option>
    <option>White</option>
</select>
<button name="update-options" type="submit">Save</button>
<?php wp_nonce_field('update-options'); ?>
</form>

どうもありがとう!

1
Philip

フロントエンドから/wp-admin/options.phpを投稿したくない場合は、悪い考えで問題を引き起こす可能性があります。

フロントエンドからOptionsを更新するには、単にupdate_option()を使用して、正しく検証されていることを確認してください。これは、マイナー修正を加えたコードを使用した例です。

<?php 
    if (isset($_POST['stylesheet']) && isset($_POST['action']) && $_POST['action'] == "update_theme"){
        if (wp_verify_nonce($_POST['theme_front_end'],'update-options')){ 
            update_option('my_theme-style',$_POST['stylesheet']);
        }else{
        ?><div class="error"><?php echo 'update failed'; ?></div><?php}
    }
?>


<form id="save-theme" name="save-theme" action="" method="post">
<select name="stylesheet">
<?php $selected = get_option('my_theme-style');
    <option>Select Theme</option>
    <option value="1" <?php if ($selected == 1) echo 'selected="selected"'; ?>>Red</option>
    <option value="2" <?php if ($selected == 2) echo 'selected="selected"'; ?>>Dark</option>
    <option value="3" <?php if ($selected == 3) echo 'selected="selected"'; ?>>White</option>
</select>
<?php wp_nonce_field('update-options','theme_front_end'); ?>
<input type="hidden" name="action" value="update_theme">
<input type="submit" name="update-options" value="Save">
</form>

これで、オプションのキーまたは名前がmy_theme-styleであると仮定しました。

2
Bainternet

多分 テーマスイッチャーリロード(Wordpress Plugin) にそれがどのようにできるかについての十分な情報が含まれていますか?

1
hakre