philip
  • 0
Мастер

Сохранить параметры темы (options.Php) из внешнего интерфейса

  • 0

Я пытаюсь сохранить параметр из внешнего интерфейса, но пока не могу найти, как это сделать.

Итак, идея состоит в том, чтобы дать владельцу блога простую форму с раскрывающимся списком, в котором можно выбрать другой файл 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>

большое спасибо!

Share
  1. Эм, а как вы идентифицируете пользователей? В бэкенде есть логин, а во фронтенде его нет. Должны ли пользователи устанавливать эту опцию для всего сайта?

    • 0
  2. Вы не хотите публиковать /wp-admin/options.php из внешнего интерфейса, это плохая идея и может вызвать проблемы.

    Чтобы обновить параметры из внешнего интерфейса, просто используйте 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.

    • 0
  3. Может быть, Theme Switcher Reloaded (плагин WordPress) содержит достаточно информации о том, как это можно сделать?

    • 0

Оставить ответ

You must login to add an answer.