Сохранить параметры темы (Options.php) с Frontend
-
16-10-2019 - |
Вопрос
Я стараюсь сохранить опцию с фронта, но я еще не могу найти, как это сделать.
Таким образом, идея состоит в том, чтобы дать владельцу блога простую форму с выпадающим списком, который может выбрать другой 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>
большое спасибо!
Решение
Вы не хотите публиковать /wp-admin/options.php с передней части , это плохая идея и может вызвать проблемы.
Для обновленных параметров с Frontend просто используйте 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.
Другие советы
Может быть Переключатель темы переключен (плагин WordPress) Содержит достаточно информации о том, как это можно сделать?