Выносим настройки темы wordpress в админку

Сергей Макаров | 13.07.2012

При создании коммерческих сайтов, очень часто возникает необходимость предоставить возможность заказчику менять некоторые настройки темы. Например номер телефона, почту, слоган сайта и т.д. Для этих целей в wordpress есть возможность вынести некоторые настройки в админку.

Добавляем в файл следующий код:

class ControlPanel {
	var $default_settings = Array(
	'phone' => '<span>495</span> 122-12-12',
	'copyr' => '2012 &copy; copyright',
	'email' => 'info@site.ru',
	);
	var $options;
	
	function ControlPanel() {
    	add_action('admin_menu', array(&$this, 'add_menu'));
		if (!is_array(get_option('themadmin')))
		add_option('themadmin', $this->default_settings);
		$this->options = get_option('themadmin');
	}
	
	function add_menu() {
		add_theme_page('WP Theme Options', 'Опции темы', 8, "themadmin", array(&$this, 'optionsmenu'));
	}
	
	function optionsmenu() {
		if ($_POST['ss_action'] == 'save') {
		$this->options["phone"] = $_POST['cp_phone'];
		$this->options["copyr"] = $_POST['cp_copyr'];
		$this->options["email"] = $_POST['cp_email'];
		update_option('themadmin', $this->options);
		echo '<div class="updated fade" id="message" style="background-color: rgb(255, 251, 204); width: 400px; margin-left: 17px; margin-top: 17px;"><p>Ваши изменения <strong>сохранены</strong>.</p></div>';
		}
		echo '<form action="" method="post" class="themeform">';
		echo '<input type="hidden" id="ss_action" name="ss_action" value="save">';
		
		print '<div class="cptab"><br />
		<b>Настройки темы</b>
		<br />
		<p>Телефон: <input style="width:300px;" name="cp_phone" id="cp_phone" value="'.$this->options["phone"].'"></p>
		<p>Email: <input style="width:300px;" name="cp_email" id="cp_email" value="'.$this->options["email"].'"></p>
		<p>Copyrights:<br /><textarea style="width:300px; height:75px;" name="cp_copyr" id="cp_copyr">'.stripslashes($this->options["copyr"]).'</textarea></p>
		</div><br />';
		echo '<input type="submit" value="Сохранить" name="cp_save" class="dochanges" />';
		echo '</form>';
	}
}
$cpanel = new ControlPanel();
$mytheme = get_option('themadmin');

Вызов любой настройки осуществляется следующим кодом:

<?php 
	$mytheme['copyr']
?>