Задавайте питання щодо курсів WordPress

Клас для додавання опцій до сайту

Передмова до уроку

Працюючи з CMS WordPress мені дуже подобалася ідея опцій у плагінах, які можна використовувати як в адмінці, так і на стороні користувача. У ці опції може бути поміщена як технічна інформація при розробці (дані для підключення до бази, зберігати список довільних полів, зберігати опції, які відносяться до окремих типів даних), так і якісь статичні дані, які виводяться на всіх сторінках (адресу, телефон, Назва сайту, гасло). Такі опції дуже корисні для виведення контактних даних, які змінюватися не часто, але найчастіше знаходяться в різних частинах коду і шукати їх дуже незручно.

Від слів до справи

Думаю з вступ закінчили і перше що я вам дам це код самого класу.

<?php
	class optionsClass {
		var $option;
		var $value;
		var $autoload;
		var $new_value;
		var $prefix;
		
		var $db;
		var $error;
		
		function __construct($db, $префікс){ // создает таблицу в базе даных с нужным префиксом, сразу после подключения класса
			if(!$db || !$префікс){
				$це->помилка[] = 'Не хватает параметров';
			вийти;
			}
			$це->db = $db;
			$це->prefix = $prefix;
			$createTable = '
				CREATE TABLE `'.$prefix.'_options` (
				  `option_id` bigint(20) unsigned zerofill NOT NULL AUTO_INCREMENT,
				  `option_name` varchar(64) DEFAULT NULL,
				  `option_value` longtext,
				  `autoload` varchar(20) DEFAULT NULL,
				  PRIMARY KEY (`option_id`)
				) ENGINE=MyISAM DEFAULT CHARSET=utf8;
			';
			$query = 'select * from `'.$prefix.'_options`';
			$result = mysql_query($запит , $це->db);
			if($result === false){
				$result = mysql_query($createTable , $це->db);
			} 
		}
		
		function get_option( $варіант, $default='' ){ // достаем опции из базы
			$query = "select option_value from ".$це->prefix."_options WHERE option_name='".$option."'";
			$result = mysql_query($запит , $це->db);
			$row = mysql_fetch_array($result);
			
			if($Рядок['option_value']){ return $row['option_value']; }ще{ $це->помилка[] = 'Опция не найдена'; повернутися помилково; }
		}

		function add_option($варіант, $value, $autoload='yes'){
			if($це->is_name_options($варіант) == хибність){ // Добавляем опции
				$query = "INSERT INTO ".$це->prefix."_options (option_name, option_value, autoload) VALUES ('".$option."', '".$value."', '".$autoload."')";
				$result = mysql_query($запит , $це->db);
				if(!$result){
					$це->помилка[] = 'Не удалось добавиь опцию в базу данных';
				}ще{
					$це->помилка[] = 'Опция ("'.$option.'" => "".$value".") добавлена в базу данных в базу данных';
				}
			}ще{
				$це->помилка[] = 'Имя не уникально';
				повернутися помилково;
			}
			
		}
		
		function is_name_options($option_name){ // проверяем наицие опции в базе
			if(isset($option_name)){ 
				$query = "вибрати * від ".$це->prefix."_options WHERE option_name='".$option_name."'";
				$result = mysql_query($запит , $це->db);
				$row = mysql_fetch_array($result);
				if($Рядок){ return true; }ще{ повернутися помилково; }
			}ще{
				$це->помилка[] = 'Опция не задана';
			}
		}
		
		function update_option($варіант, $value){ // Обновляем опции
			if($це->is_name_options($варіант)){
				$query = "update ".$це->prefix."_options SET option_value='".$value."' WHERE option_name='".$option."'";
				$result = mysql_query($запит , $це->db);
				if($result){ $це->помилка[] = 'Опция '.$option.' обновлена'; }ще{ $це->помилка[] = 'Опция '.$option.' не обновлена'; }
			}ще{
				$це->помилка[] = 'Нет такой опции ['.$option.'] в базе';
			}
		}

		function delete_option($варіант){ // удаляем опции
			if($це->is_name_options($варіант)){
			//echo $option; вийти;
				$query = "delete from ".$це->prefix."_options WHERE option_name='".$option."'";
				//echo $query ;
				$result = mysql_query($запит , $це->db);
				if($result){ $це->помилка[] = 'Опция '.$option.' удалена'; }ще{ $це->помилка[] = 'Опция '.$option.' не удалена'; }
			}ще{
				$це->помилка[] = 'Нет такой опции ['.$option.'] в базе';
			}
		}
		
		function load_alloptions(){ // вывести на экран все опции
			$query = "Виберіть option_name, option_value from ".$це->prefix."_options";
			$result = mysql_query($запит , $це->db);
			Хоча($row = mysql_fetch_array($result)){
					луна '[ '.$row['option_name'].' ] => [ '.$row['option_value'].' ]<Бр />';				
			}
		}
		
		function log(){ // лог операций и ошибок
			if($це->помилка){
				луна '<Попередньо>';
				print_r($це->помилка);
				луна '</Попередньо>';
			}
		}
	}
?>

Ось такий непростий клас, давайте розглянемо всі його методи по порядку.

Конструктор класу – перевіряє, чи є у базі даних таблиця опцій, якщо її немає, то самостійно створює цю таблицю. Конструктор приймає змінну підключення до бази даних $db та змінну префікс таблиць $prefix. Якщо немає змінних $db або $prefix, то як $error записується повідомлення про помилку і програма зупиняється.

метод get_option() необхідний для виведення однієї опції, яка вже є в базі. Тут робиться проста вибірка, думаю, якщо ви працюєте з ОВП, то про це можна вже не говорити.

метод add_option($варіант, $value) необхідний для додавання нових опцій до бази, якщо опція із зазначеним ім'ям вже існує, то у властивість $це->помилка додається повідомлення, яке розробник може вивести для себе або відвідувачів сайту за допомогою методу журнал().

метод is_name_options() допомагає перевірити, чи є опція із запропонованим ім'ям у таблиці опцій.

метод update_option() оновлює дані у вже існуючих опціях. Приймає 2 обов'язкових параметрів $варіант і $value (ім'я опції та значення).

Метод класу delete_option() необхідний видалення непотрібних опцій, якщо така існує у базі даних. Опція перевіряється і якщо було знайдено, то видаляється з бази на ім'я.

метод load_alloptions() призначений для виведення на екран усіх опцій, ця функція потрібна виключно для перегляду опцій розробником.

Про метод журнал() ми вже говорили, цей метод призначений для виведення всіх повідомлень, які потрапили в масив властивості $це->помилка.

Робота з класом опцій

Зараз, коли ми розглянули всі методи, можна плавно перейти до роботи з нашим класом.

Оскільки клас у нас працює через базу даних, то для початку нам необхідно її створити та підключиться, а таблицю вже створить наш клас.

$db = mysql_connect('localhost', 'БД', 'WP-ADMIN');
if (!$db) {
	померти('Не вдалося підключитися: ' . mysql_error());
}

mysql_select_db( 'db-name', $db );

Далі підключаємо наш клас та пробуємо його використовувати:

включити './optionsClass.php';
	$префікс = 'cl';
	$obj = нові параметриClass($db, $префікс);
	$Об'єкт->add_option('optionsName',12);
	//$Об'єкт->update_option('optionsName',13);
	//$Об'єкт->delete_option('optionsName');
	$Об'єкт->load_alloptions();
	$opt = $obj->get_option('optionsName');
	відлуння $opt;
	
	$Об'єкт->журнал();
mysql_close($db);

Пограйте з методами класу та спробуйте за допомогою методів додавати нові опції, виводити їх на екран, оновлювати дані в опції, видаляти опції. Обов'язково спробуйте виводити повідомлення за допомогою методу журнал().

Ось і весь загальний огляд класу, далі думаю розберетеся. Для роботи з прикладом необхідно ввести нові дані для підключення до бази. Сам клас я викладаю у файлі, щоб у вас не було помилок при копіюванні, але обов'язково розберіться в роботі до використання.

Скачать архив с примером

Якщо виявили неточності, пишіть нам у коментарях і ми постараємося їх виправити.


Купити хостинг WordPress
/* Репетитор по wordpress
Послуги репетитора онлайн. Список курсів, які я веду
  • Базовий курс з веб-дизайну;
  • Верстка сайтів;
  • Загальний курс CMS WordPress та продовження курсу з розробки шаблонів;
  • Розробка сайтів на PHP.
Докладніше читайте на сторінці репетитор по WordPress
*/

Ніколаєнко Максим

Директор веб-студии ProGrafika. Займаюсь розробкою, дизайном та просуванням веб-сайтів. Завжди радий новим читачам блогу та добрим клієнтам.


Вам також може сподобатися...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.

Шаблони для WordPress
Найкращий хостинг в Україні
Стабільний хостинг для Drupal