- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
В последнее время все чаще делаю сайты на WordPress. Делаю как для себя, так и для заказчиков.
Как мы все знаем, в шаблоне есть много вещей, которые прописаны именно в файлах шаблона, и изменить их можно только там, например: адрес RSS фида, какой-то текст в шапке или футере, урлы страниц которые прописаны именно в шаблоне, и многое другое.
Когда сдаешь работу заказчику, приходится объяснять как изменить то или то, как править шаблоны и прочее.
Теперь расскажу как все эти параметры, которые в будущем возможно нужно будет изменить, вынести в отдельную админку:
Как подключить админку:
В файле header.php в самом верху прописываем:
В файле functions.php (после <?php ) прописываем:
Theme Control Panel
*********************************************************/
class ControlPanel {
/********************************************************
Array for Default Options
********************************************************/
var $default_settings = Array(
‘feed‘ => ‘ http://feeds.feedburner.com/’,
‘postright’ => ‘3′,
‘catn’ => ‘ 1,3′,
‘headtext’ => ‘Ну очень красивая шапка!’,
‘footertext’ => ‘Copyright © 2009 - Самый крутой сайт!’,
);
var $options;
/********************************************************
Initiate new control panel function
********************************************************/
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’);
}
/********************************************************
Create a theme settings page to edit theme settings and put its css
********************************************************/
function add_menu() {
add_theme_page(’Theme Options’, ‘Theme Options’, 8, “themadmin”, array(&$this, ‘optionsmenu’));
}
/********************************************************
The options page in control panel. Saving and editing goes here
********************************************************/
function optionsmenu() {
if ($_POST['ss_action'] == ’save’) {
$this->options["feed"] = $_POST['cp_feed'];
$this->options["postright"] = $_POST['cp_postright'];
$this->options["catright"] = $_POST['cp_catright'];
$this->options["headtext"] = $_POST['cp_headtext'];
$this->options["footertext"] = $_POST['cp_footertext'];
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>Your changes have been <strong>saved</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>Theme Options</b>
<br>
<p><input class=”widefat” style=”width:300px” name=”cp_feed” id=”cp_feed” value=”‘.$this->options["feed"].’”> Адрес RSS фида</p>
<p><input class=”widefat” style=”width:100px” name=”cp_postright” id=”cp_postright” value=”‘.$this->options["postright"].’”> Количество постов в правой колонке</p>
<p><input class=”widefat” style=”width:100px” name=”cp_catright” id=”cp_catright” value=”‘.$this->options["catright"].’”> Рубрики для правой колонки (через запятую)</p>
<p>Текст в шапке:<br /><textarea style=”width:400px;height:75px;” name=”cp_headtext” id=”cp_headtext”>’.stripslashes($this->options["headtext"]).’</textarea></p>
<p>Текст в подвале:<br /><textarea style=”width:400px;height:75px;” name=”cp_footertext” id=”cp_footertext”>’.stripslashes($this->options["footertext"]).’</textarea></p>
</div>
‘;
echo ‘Все готово? Тогда <input type=”submit” value=”Сохранимся »” name=”cp_save” class=”dochanges” />’;
echo ‘</form>’;
}
/* ended cpanel class */
}
$cpanel = new ControlPanel();
$mytheme = get_option(’themadmin’);
Разберем немного поподробней этот код.
В блоке Array for Default Options задаются сами переменные и их начальное значение. К примеру произвольная переменная feed и ее изначальное значение http://feeds.feedburner.com/ .
В блоке The options page in control panel мы подключаем переменные к админке, тут ничего сложного нет (строка $this->options["feed"] = $_POST['cp_feed']; ).
В Theme Options мы делаем вывод переменных в админку (<p><input class=”widefat” style=”width:300px” name=”cp_feed” id=”cp_feed” value=”‘.$this->options["feed"].’”> Адрес RSS фида</p>).
И так, для того чтобы подключить переменную feed нам нужно:
1) В блоке Array for Default Options указать эту переменную и ее значение (’feed’ => ‘ http://feeds.feedburner.com/’,).
2) Указать переменную в блоке The options page in control panel ($this->options["feed"] = $_POST['cp_feed'];)
3) Сделать вывод переменной в Theme Options (<p><input class=”widefat” style=”width:300px” name=”cp_feed” id=”cp_feed” value=”‘.$this->options["feed"].’”> Адрес RSS фида</p>) – тут сама переменная указывается в трех местах (name, id и value).
Все, переменная у нас подключена в админке, теперь для чтобы вставить ее в шаблоне выполняем функцию:
Например: (<?=$mytheme['feed']?>)
Если перменная выводится внутри php функции, то это делается так:
Например: query(’showposts=1&cat=’.$mytheme['catn'].”);
Для того чтобы использовать переменные в сайдбаре или футере, то их в шаблон нужно инклудить не через
а вот так:
Когда вы первый раз сохраните functions.php – все переменные которые там есть запишутся в БД, и сразу появятся в админке, но когда вы уже потом будете добавлять новые переменные в functions.php, они в админке будут идти с пустыми полями – это ничего страшного, когда заказчик активируется тему у себя первый раз – все переменные у него заполнятся правильно.
Желательно на каждом новом шаблоне делать уникальной переменную themadmin (themadmin1, themadmin2…) – это переменная самой админки, и под таким названием создается строка в БД (сама переменная в коде встречается 6 раз, т.е. заменить ее надо 6 раз).
Для чего это можно использовать? Да для чего угодно, например:
Используя переменные можно делать очень удобные и качественные шаблоны.
Ну, и скромная ссылка на источник.
спасибо, пригодится
Будем пробовать, пасиб.
Всегда пожалуйста :).
Обязательно попробую.
Спасибо за полезную инфу.
а я думал речь в топике об админке WP в стиле темы сайта )
Я уже разрабатывал такие решения, интересно стало как это делают другие разработчики :)
Дело в том, что некоторые заказчики желают, чтобы админка была копией структуры и дизайна самого сайта,
им кажется, что тогда даже секретарша сможет разобраться в управлении сайтом ;)
unodj, как по мне, так проще чем у ВП админки не найти :).
А этот вариант еще и поможет изменения в шаблоне упростить!
unodj, как по мне, так проще чем у ВП админки не найти :).
А этот вариант еще и поможет изменения в шаблоне упростить!
секретарши разные бывают :D
Для простейшего сайта с одной лентой записей - админки WP вполне достаточно, но применительно к полноценному сайту с разными разделами и кучей шаблонов для разных типов записей, страниц и рубрик, если админка отражает структуру и дизайн сайта - с ней гораздо проще управляться человеку, не обладающему абстрактным мышлением ;)
А то пойди объясни этим секретуткам как это так, пишешь в одном месте и обычным текстом, картинки загружаешь в другом месте,
а записи на сайте потом отображаются в других местах, при этом совершенно иначе выглядят и текст оформлен во другому, и картинки сами в нужных местах вставляются и т.д.